【发布时间】:2018-02-14 11:52:02
【问题描述】:
最近在练习kubernetes的时候,发现没有文档和例子专门解释如何在kubernetes中正确使用cinder。
那么如何设置 cinder 在 kubernetes 中使用?
【问题讨论】:
标签: kubernetes openstack cinder
最近在练习kubernetes的时候,发现没有文档和例子专门解释如何在kubernetes中正确使用cinder。
那么如何设置 cinder 在 kubernetes 中使用?
【问题讨论】:
标签: kubernetes openstack cinder
非常感谢您的精彩分享!
该解决方案适用于我(K8S 1.14.3,OpenStack Queen),我刚刚添加了参数/volumeMounts/volume 的 sn-ps,如下所示:
参数:
- --cloud-provider=openstack
- --cloud-config=/etc/kubernetes/cloud-config
volumeMounts:
-- mountPath: /etc/kubernetes/cloud-config
name: cloud
readOnly: true
音量:
-- hostPath:
path: /etc/kubernetes/cloud.conf
type: FileOrCreate
name: cloud
【讨论】:
我做了一些实验,并弄清楚了如何使用 kubernetes 设置 cinder。只需找到适合记录和分享的内容即可。
准备
背景
根据我的调查,组件kube-controller-manager 负责在 Kubernetes 中加载卷插件和相关。因此我们可以通过调整kube-controller-manager 配置来使cinder 可用。
步骤
cloud.conf 文件以包含您的 openstack 凭据准备好你的 openstack 凭据并保存为文件,例如 kube-controller-manager 所在的 kubernetes 控制面板中的 /etc/kubernetes/cloud.conf。以下是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。
只有一个提示,如果您使用 kube-controller-manager 的静态 pod,请确保已将所有文件(例如 cloud.conf 或 openstack ca 文件)挂载到容器中。
验证
我们将创建一个存储类,并使用这个存储类动态创建持久化卷。
standard的存储类:demo-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
demo-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
kubectl create -f demo-pvc.yml 创建 PVC
现在通过命令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 运行良好。
【讨论】: