目标
将 ES 数据挂载到 Azure 存储账户的 File System
K8S 在 1.7 左右支持了,PV 模式,意在将一些持久化工作“独立”出来。
这边以 Azure 环境作一次探索,前提是对 Azure 的存储账户有一定了解。
开通 Azure 存储账户
创建一个名为 kubernetes
的存储账户,并创建一个 File 组 test
TIPS:取得密钥备用
echo -n zp0sadsadasdasdasdjhsakjdhsakdhaskjstIPnA==
创建 secret
base64 账户名和密钥
echo -n kubernetes | base64
echo -n zp0sadsadasdasdasdjhsakjdhsakdhaskjstIPnA== | base64
创建 secret.yaml 并键入 base64 后的值
apiVersion: v1
kind: Secret
metadata:
name: azure-secret
type: Opaque
data:
azurestorageaccountname: a3ViasdasdasduasdasasdasdGE=
azurestorageaccountkey: enAwWWt2ZlBSaasdasdhaskjdhasdhaskj3M1ZqasdasdaQ==
kubectl create -f secret.yaml
创建一个示例POD
这里以 Nginx 为例子,注意填写 secretName 和 shareName
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- name: azure
mountPath: /mnt/azure
volumes:
- name: azure
azureFile:
secretName: azure-secret
shareName: test
readOnly: false
kubectl create -f azure.yaml
查看是否创建成功
root# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 17s
进入容器内查看
root@nginx:/mnt/azure# df -Th
Filesystem Type Size Used Avail Use% Mounted on
overlay overlay 30G 3.6G 26G 13% /
tmpfs tmpfs 64M 0 64M 0% /dev
tmpfs tmpfs 3.5G 0 3.5G 0% /sys/fs/cgroup
//kubernetes.file.core.chinacloudapi.cn/test cifs 10G 0 10G 0% /mnt/azure
/dev/sda1 ext4 30G 3.6G 26G 13% /etc/hosts
shm tmpfs 64M 0 64M 0% /dev/shm
tmpfs tmpfs 3.5G 12K 3.5G 1% /run/secrets/kubernetes.io/serviceaccount
tmpfs tmpfs 3.5G 0 3.5G 0% /proc/acpi
tmpfs tmpfs 3.5G 0 3.5G 0% /proc/scsi
tmpfs tmpfs 3.5G 0 3.5G 0% /sys/firmware
这里已经挂载成功
相关链接
https://stackoverflow.com/questions/44707379/mounting-azure-file-storage-in-docker-container-via-kubernetes
https://github.com/kubernetes/kubernetes/issues/46081
https://github.com/kubernetes/kubernetes/blob/master/pkg/volume/azure_file/azure_file.go#L210
网友评论