最近在练习kubernetes的时候,发现没有一个doc和example专门解释如何在kubernetes中正确使用cinder。
那么如何设置 cinder 在 kubernetes 中使用呢?
最近在练习kubernetes的时候,发现没有一个doc和example专门解释如何在kubernetes中正确使用cinder。
那么如何设置 cinder 在 kubernetes 中使用呢?
我做了一些实验,并弄清楚了如何使用 kubernetes 设置 cinder。只需找到一个合适的文档和共享。
准备
背景
根据我的调查,组件kube-controller-manager
负责加载 Kubernetes 中的卷插件和相关插件。所以我们可以通过调整kube-controller-manager
配置使 cinder 可用。
脚步
cloud.conf
文件以包含您的 openstack 凭据准备好你的 openstack creds 并保存为一个文件,例如/etc/kubernetes/cloud.conf
在 kubernetes 控制面板中kube-controller-manager
。以下是示例cloud.conf
[Global]
auth-url=$your_openstack_auth_url
username=$your_openstack_user
password=$your_user_pw
region=$your_openstack_reigon
tenant-name=$your_project_name
domain-name=$your_domain_name
ca-file=$your_openstack_ca
大多数可以从您的stackrc
文件中找到。并且ca-file
item 是可选的,取决于您的 openstack auth url 是http
还是https
kube-controller-manager
启动配置此链接是kube-controller-manager
( https://kubernetes.io/docs/admin/kube-controller-manager/ )的完整详细信息选项
实际上,我们应该根据您当前的参数添加两个额外的参数
--cloud-provider=openstack
--cloud-config=/etc/kubernetes/cloud.conf
主要有两种启动方式kube-controller-manager
:1)使用systemd 2)使用静态pod。
只是一个提示,如果您使用静态 pod kube-controller-manager
,请确保已将所有文件(例如 cloud.conf 或 openstack ca 文件)挂载到您的容器中。
确认
我们将创建一个存储类,并使用该存储类动态创建持久卷。
standard
:演示-sc.yml:
apiVersion: storage.k8s.io/v1beta1
kind: StorageClass
metadata:
name: standard
annotations:
storageclass.beta.kubernetes.io/is-default-class: "true"
labels:
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: EnsureExists
provisioner: kubernetes.io/cinder
使用命令kubectl create -f demo-sc.yml
创建并使用命令kubectl get sc
验证它是否正确创建
NAME TYPE
standard (default) kubernetes.io/cinder
演示 pvc.yml:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: cinder-claim
annotations:
volume.beta.kubernetes.io/storage-class: "standard"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
通过创建 PVCkubectl create -f demo-pvc.yml
现在通过命令检查kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE
cinder-claim Bound pvc-5dd3d62e-9204-11e7-bc43-fa163e0e0379 1Gi RWO standard 23h
而在openstack环境下,通过命令检查cinder list | grep pvc-5dd3d62e-9204-11e7-bc43-fa163e0e0379
root@ds0114:~# cinder list | grep pvc-5dd3d62e-9204-11e7-bc43- fa163e0e0379
| ddd8066d-2e16-4cb2-a89e-cd9d5b99ef1b | available | kubernetes-dynamic- pvc-5dd3d62e-9204-11e7-bc43-fa163e0e0379 | 1 | CEPH_SSD | false | |
所以现在 StorageClass 在 Kubernetes 中使用 Cinder 运行良好。
非常感谢您的精彩分享!
该解决方案适用于我 ( K8S 1.14.3
, OpenStack Queen
),我刚刚添加了参数/volumeMounts/volume 的片段,如下所示:
参数:
- --cloud-provider=openstack
- --cloud-config=/etc/kubernetes/cloud-config
卷装:
-- mountPath: /etc/kubernetes/cloud-config
name: cloud
readOnly: true
音量:
-- hostPath:
path: /etc/kubernetes/cloud.conf
type: FileOrCreate
name: cloud