[TOC]
### **准备条件**
创建一个ACK托管版集群,部署好CSI插件,如下:
```
$ kubectl get node
NAME STATUS ROLES AGE VERSION
cn-beijing.192.168.98.31 Ready <none> 86m v1.26.3-aliyun.1
$ kubectl get pod -n kube-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ack-node-local-dns-admission-controller-856cdc64fc-p26w7 1/1 Running 0 87m 10.96.0.3 cn-beijing.192.168.98.31 <none> <none>
coredns-7b7cb5d545-mq8cf 1/1 Running 0 87m 10.96.0.4 cn-beijing.192.168.98.31 <none> <none>
csi-plugin-n76vc 4/4 Running 0 86m 192.168.98.31 cn-beijing.192.168.98.31 <none> <none>
csi-provisioner-6d5fd7b8b7-vzrjf 9/9 Running 0 87m 10.96.0.5 cn-beijing.192.168.98.31 <none> <none>
kube-flannel-ds-blxcl 1/1 Running 0 86m 192.168.98.31 cn-beijing.192.168.98.31 <none> <none>
kube-proxy-worker-pl5vj 1/1 Running 0 86m 192.168.98.31 cn-beijing.192.168.98.31 <none> <none>
node-local-dns-g7l69 1/1 Running 0 86m 192.168.98.31 cn-beijing.192.168.98.31 <none> <none>
storage-auto-expander-55767bc6b9-lp86v 1/1 Running 0 85m 10.96.0.9 cn-beijing.192.168.98.31 <none> <none>
storage-cnfs-8469d4b74-2j4pp 1/1 Running 0 85m 10.96.0.10 cn-beijing.192.168.98.31 <none> <none>
storage-monitor-65cc4d55cb-fw9x5 1/1 Running 0 85m 10.96.0.11 cn-beijing.192.168.98.31 <none> <none>
storage-operator-5d6589c764-wk6mx 1/1 Running 0 87m 10.96.0.7 cn-beijing.192.168.98.31 <none> <none>
```
查看storageClass。下面存在多个,其中:alicloud-disk-ssd表示创建的是普通云盘;alicloud-disk-efficiency表示是的高效云盘;alicloud-disk-essd表示essd盘;
```
$ kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
alibabacloud-cnfs-nas nasplugin.csi.alibabacloud.com Delete Immediate true 86m
alicloud-disk-available diskplugin.csi.alibabacloud.com Delete Immediate true 89m
alicloud-disk-efficiency diskplugin.csi.alibabacloud.com Delete Immediate true 89m
alicloud-disk-essd diskplugin.csi.alibabacloud.com Delete Immediate true 89m
alicloud-disk-ssd diskplugin.csi.alibabacloud.com Delete Immediate true 89m
alicloud-disk-topology diskplugin.csi.alibabacloud.com Delete WaitForFirstConsumer true 89m
alicloud-disk-topology-alltype diskplugin.csi.alibabacloud.com Delete WaitForFirstConsumer true 89m
```
由于我们这里使用的K8S节点的ECS,系统盘使用是的essd,所以接下来我们也使用essd这个sc。
```
$ kubectl get sc alicloud-disk-essd -o yaml
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
creationTimestamp: "2023-07-06T02:19:34Z"
name: alicloud-disk-essd
resourceVersion: "973926907"
uid: 6216781e-5697-49b1-96d0-8c61a4757aca
parameters:
type: cloud_essd
provisioner: diskplugin.csi.alibabacloud.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
```
另外,CSIDriver的信息如下:
```
$ kubectl get csidriver
NAME ATTACHREQUIRED PODINFOONMOUNT STORAGECAPACITY TOKENREQUESTS REQUIRESREPUBLISH MODES AGE
diskplugin.csi.alibabacloud.com true true false <unset> false Persistent 95m
nasplugin.csi.alibabacloud.com false true false <unset> false Persistent 95m
ossplugin.csi.alibabacloud.com false true false <unset> false Persistent 95m
$ kubectl get csidriver diskplugin.csi.alibabacloud.com -o yaml
apiVersion: storage.k8s.io/v1
kind: CSIDriver
metadata:
creationTimestamp: "2023-07-06T02:19:34Z"
name: diskplugin.csi.alibabacloud.com
resourceVersion: "973926899"
uid: 9662f0ed-bf67-43af-b5f4-b9fe90ffd7f8
spec:
attachRequired: true
fsGroupPolicy: ReadWriteOnceWithFSType
podInfoOnMount: true
requiresRepublish: false
storageCapacity: false
volumeLifecycleModes:
- Persistent
```
另外,我们查看一下云盘信息,此时只有K8S节点的ECS有一块系统盘云盘:
![](https://img.kancloud.cn/06/67/0667d0487f583201b861cd58048fa889_1366x255.png)
### **创建一个PVC**
创建一个如下的PVC
```
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc1
spec:
storageClassName: alicloud-disk-essd
resources:
requests:
storage: 20Gi
accessModes:
- ReadWriteOnce
```
创建成功后,发现已经绑定成功
```
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc1 Bound d-2zei5sif6fzplh3oaclu 20Gi RWO alicloud-disk-essd 6s
```
查看PV的信息
```
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
d-2zei5sif6fzplh3oaclu 20Gi RWO Delete Bound default/pvc1 alicloud-disk-essd 16s
$ kubectl get pv d-2zei5sif6fzplh3oaclu -o yaml
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
csi.alibabacloud.com/volume-topology: '{"nodeSelectorTerms":[{"matchExpressions":[{"key":"node.csi.alibabacloud.com/disktype.cloud_essd","operator":"In","values":["available"]}]}]}'
pv.kubernetes.io/provisioned-by: diskplugin.csi.alibabacloud.com
creationTimestamp: "2023-07-06T03:59:14Z"
finalizers:
- kubernetes.io/pv-protection
labels:
csi.alibabacloud.com/disktype: cloud_essd.PL1
name: d-2zei5sif6fzplh3oaclu
resourceVersion: "974134592"
uid: 169ab343-a5b6-4cd9-a8e0-ae59793f5fd0
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 20Gi
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: pvc1
namespace: default
resourceVersion: "974134523"
uid: 4c3ef730-7be0-4417-8096-0087187c3085
csi:
driver: diskplugin.csi.alibabacloud.com
fsType: ext4
volumeAttributes:
storage.kubernetes.io/csiProvisionerIdentity: 1688610096323-8117-diskplugin.csi.alibabacloud.com
type: cloud_essd
volume.kubernetes.io/storage-provisioner: diskplugin.csi.alibabacloud.com
volumeHandle: d-2zei5sif6fzplh3oaclu
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: topology.diskplugin.csi.alibabacloud.com/zone
operator: In
values:
- cn-beijing-g
persistentVolumeReclaimPolicy: Delete
storageClassName: alicloud-disk-essd
volumeMode: Filesystem
```
查看该PV对应的云盘,现在是待挂载状态:
![](https://img.kancloud.cn/ce/b7/ceb7dfd09ce7b9e014f2f07b1504d6c6_1349x304.png)
### **创建Pod使用PVC**
创建如下Pod,使用这个PVC
```
apiVersion: v1
kind: Pod
metadata:
name: tomcat
spec:
volumes:
- name: volume1
persistentVolumeClaim:
claimName: pvc1
containers:
- name: tocmat
image: registry-vpc.cn-beijing.aliyuncs.com/pshizh/busybox:latest
command: ["tail", "-f", "/dev/null"]
volumeMounts:
- name: volume1
mountPath: /volume1
```
查看Pod状态
```
$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
tomcat 1/1 Running 0 16s 10.96.0.13 cn-beijing.192.168.98.31 <none> <none>
```
查看VolumeAttachment对象
```
$ kubectl get volumeattachment
NAME ATTACHER PV NODE ATTACHED AGE
csi-a825a2701acabcfa07618fc116ef6d57d1161c31f08845f605868d9a809c01f3 diskplugin.csi.alibabacloud.com d-2zei5sif6fzplh3oaclu cn-beijing.192.168.98.31 true 68s
$ kubectl get volumeattachment csi-a825a2701acabcfa07618fc116ef6d57d1161c31f08845f605868d9a809c01f3 -o yaml
apiVersion: storage.k8s.io/v1
kind: VolumeAttachment
metadata:
annotations:
csi.alpha.kubernetes.io/node-id: i-2zeb10e30f1q4rzupluf
creationTimestamp: "2023-07-06T04:04:20Z"
finalizers:
- external-attacher/diskplugin-csi-alibabacloud-com
name: csi-a825a2701acabcfa07618fc116ef6d57d1161c31f08845f605868d9a809c01f3
resourceVersion: "974145331"
uid: 049522fa-4cc6-437f-a99b-b64251e0a3a8
spec:
attacher: diskplugin.csi.alibabacloud.com
nodeName: cn-beijing.192.168.98.31
source:
persistentVolumeName: d-2zei5sif6fzplh3oaclu
status:
attached: true
```
查看云盘信息,为“使用中”状态,且挂载的实例为K8S节点这个ECS
![](https://img.kancloud.cn/17/9a/179a8437ad77fbad7b325ac22a5fbf05_1345x300.png)
我们去到ECS中查看这个云盘信息,从lshw命令可以看出,该云盘和系统盘都是virtio类型的设备:
```
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdb 253:16 0 20G 0 disk /var/lib/kubelet/pods/2505907b-19ce-43c5-b650-207ebc837aec/volumes/kubernetes.io~csi/d-2zei5sif6fzplh3oaclu/mount
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
$ df -hT /dev/vdb
Filesystem Type Size Used Avail Use% Mounted on
/dev/vdb ext4 20G 24K 20G 1% /var/lib/kubelet/pods/2505907b-19ce-43c5-b650-207ebc837aec/volumes/kubernetes.io~csi/d-2zei5sif6fzplh3oaclu/mount
$ lshw -class disk
*-virtio2
description: Virtual I/O device
physical id: 0
bus info: virtio@2
logical name: /dev/vda
size: 40GiB (42GB)
capabilities: partitioned partitioned:dos
configuration: driver=virtio_blk logicalsectorsize=512 sectorsize=512 signature=000bf04b
*-virtio4
description: Virtual I/O device
physical id: 0
bus info: virtio@4
logical name: /dev/vdb
logical name: /var/lib/kubelet/plugins/kubernetes.io/csi/diskplugin.csi.alibabacloud.com/86b86ca7c499a9ee251517d7a7c3f39e5debc947eda66ca69f226f128a9db125/globalmount
logical name: /var/lib/kubelet/pods/2505907b-19ce-43c5-b650-207ebc837aec/volumes/kubernetes.io~csi/d-2zei5sif6fzplh3oaclu/mount
size: 20GiB (21GB)
configuration: driver=virtio_blk logicalsectorsize=512 mount.fstype=ext4 mount.options=rw,relatime sectorsize=512 state=mounted
```
### **安装虚拟节点,给ECI挂载云盘**
我们先清理掉上面的pod,使云盘再次处于“待挂载”状态:
```
$ kubectl delete pod tomcat
```
然后,我们安装虚拟节点插件,安装成功后,可以看到虚拟节点:
```
$ kubectl get node
NAME STATUS ROLES AGE VERSION
cn-beijing.192.168.98.31 Ready <none> 115m v1.26.3-aliyun.1
virtual-kubelet-cn-beijing-g Ready agent 50m v1.26.3-aliyun.1
```
接着,我们创建如下Pod,让它调试到虚拟节点上:
```
apiVersion: v1
kind: Pod
metadata:
name: eci
labels:
alibabacloud.com/eci: "true"
spec:
volumes:
- name: volume1
persistentVolumeClaim:
claimName: pvc1
containers:
- name: tocmat
image: registry-vpc.cn-beijing.aliyuncs.com/pshizh/busybox:latest
command: ["tail", "-f", "/dev/null"]
volumeMounts:
- name: volume1
mountPath: /volume1
```
创建成功后,查看状态:
```
$ kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
eci 1/1 Running 0 31s 192.168.98.38 virtual-kubelet-cn-beijing-g <none> <none>
```
查看volumeattachment,此时发现没有生成该对象:
```
$ kubectl get volumeattachment
No resources found
```
查看云盘信息,发现挂载到了ECI实例上:
![](https://img.kancloud.cn/e5/99/e599c598ad19b49bbd15b9d01db9055c_1348x298.png)
### **其他**
CSI相关的镜像如下:
```
$ apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
deployment.kubernetes.io/revision: "1"
creationTimestamp: "2023-07-06T02:19:34Z"
generation: 2
name: csi-provisioner
namespace: kube-system
resourceVersion: "973947863"
uid: cc6ba7ad-d022-477f-a90c-2138f585e501
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: csi-provisioner
strategy:
rollingUpdate:
maxSurge: 0
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: csi-provisioner
spec:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- preference:
matchExpressions:
- key: node-role.kubernetes.io/master
operator: Exists
weight: 1
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: type
operator: NotIn
values:
- virtual-kubelet
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
- key: app
operator: In
values:
- csi-provisioner
topologyKey: kubernetes.io/hostname
weight: 100
containers:
- args:
- --csi-address=$(ADDRESS)
- --feature-gates=Topology=True
- --volume-name-prefix=disk
- --strict-topology=true
- --timeout=150s
- --leader-election=true
- --retry-interval-start=500ms
- --extra-create-metadata=true
- --default-fstype=ext4
- --v=5
env:
- name: ADDRESS
value: /var/lib/kubelet/csi-provisioner/diskplugin.csi.alibabacloud.com/csi.sock
image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/csi-provisioner:v3.0.0-080f01e64-aliyun
imagePullPolicy: IfNotPresent
name: external-disk-provisioner
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/kubelet/csi-provisioner/diskplugin.csi.alibabacloud.com
name: disk-provisioner-dir
- args:
- --v=5
- --csi-address=$(ADDRESS)
- --leader-election=true
env:
- name: ADDRESS
value: /var/lib/kubelet/csi-provisioner/diskplugin.csi.alibabacloud.com/csi.sock
image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/csi-attacher:v3.3-72dd428b-aliyun
imagePullPolicy: IfNotPresent
name: external-disk-attacher
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/kubelet/csi-provisioner/diskplugin.csi.alibabacloud.com
name: disk-provisioner-dir
- args:
- --v=5
- --csi-address=$(ADDRESS)
- --leader-election
env:
- name: ADDRESS
value: /var/lib/kubelet/csi-provisioner/diskplugin.csi.alibabacloud.com/csi.sock
image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/csi-resizer:v1.3-ca84e84-aliyun
imagePullPolicy: IfNotPresent
name: external-disk-resizer
resources:
limits:
cpu: 500m
memory: 8Gi
requests:
cpu: 10m
memory: 16Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/kubelet/csi-provisioner/diskplugin.csi.alibabacloud.com
name: disk-provisioner-dir
- args:
- --csi-address=$(ADDRESS)
- --volume-name-prefix=nas
- --timeout=150s
- --leader-election=true
- --retry-interval-start=500ms
- --default-fstype=nfs
- --v=5
env:
- name: ADDRESS
value: /var/lib/kubelet/csi-provisioner/nasplugin.csi.alibabacloud.com/csi.sock
image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/csi-provisioner:v3.0.0-080f01e64-aliyun
imagePullPolicy: IfNotPresent
name: external-nas-provisioner
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/kubelet/csi-provisioner/nasplugin.csi.alibabacloud.com
name: nas-provisioner-dir
- args:
- --v=5
- --csi-address=$(ADDRESS)
- --leader-election
env:
- name: ADDRESS
value: /var/lib/kubelet/csi-provisioner/nasplugin.csi.alibabacloud.com/csi.sock
image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/csi-resizer:v1.3-ca84e84-aliyun
imagePullPolicy: IfNotPresent
name: external-nas-resizer
resources:
limits:
cpu: 500m
memory: 8Gi
requests:
cpu: 10m
memory: 16Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/kubelet/csi-provisioner/nasplugin.csi.alibabacloud.com
name: nas-provisioner-dir
- args:
- --csi-address=$(ADDRESS)
- --volume-name-prefix=oss
- --timeout=150s
- --leader-election=true
- --retry-interval-start=500ms
- --default-fstype=ossfs
- --v=5
env:
- name: ADDRESS
value: /var/lib/kubelet/csi-provisioner/ossplugin.csi.alibabacloud.com/csi.sock
image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/csi-provisioner:v3.0.0-080f01e64-aliyun
imagePullPolicy: IfNotPresent
name: external-oss-provisioner
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/kubelet/csi-provisioner/ossplugin.csi.alibabacloud.com
name: oss-provisioner-dir
- args:
- --v=5
- --csi-address=$(ADDRESS)
- --leader-election=true
- --extra-create-metadata=true
env:
- name: ADDRESS
value: /csi/csi.sock
image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/csi-snapshotter:v4.0.0-a230d5b3-aliyun
imagePullPolicy: IfNotPresent
name: external-csi-snapshotter
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /csi
name: disk-provisioner-dir
- args:
- --v=5
- --leader-election=true
image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/snapshot-controller:v4.0.0-a230d5b3-aliyun
imagePullPolicy: IfNotPresent
name: external-snapshot-controller
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
- args:
- --endpoint=$(CSI_ENDPOINT)
- --v=2
- --driver=nas,disk,oss
env:
- name: CSI_ENDPOINT
value: unix://var/lib/kubelet/csi-provisioner/driverplugin.csi.alibabacloud.com-replace/csi.sock
- name: MAX_VOLUMES_PERNODE
value: "15"
- name: SERVICE_TYPE
value: provisioner
- name: CLUSTER_ID
value: cd50ff192462f4aa883e41dfa7426ee41
- name: KUBE_NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/csi-plugin:v1.26.1-e45b407-aliyun
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 5
httpGet:
path: /healthz
port: healthz
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
name: csi-provisioner
ports:
- containerPort: 11270
name: healthz
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /healthz
port: healthz
scheme: HTTP
initialDelaySeconds: 5
periodSeconds: 20
successThreshold: 1
timeoutSeconds: 1
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 100m
memory: 128Mi
securityContext:
privileged: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/log/
name: host-log
- mountPath: /var/lib/kubelet/csi-provisioner/diskplugin.csi.alibabacloud.com
name: disk-provisioner-dir
- mountPath: /var/lib/kubelet/csi-provisioner/nasplugin.csi.alibabacloud.com
name: nas-provisioner-dir
- mountPath: /var/lib/kubelet/csi-provisioner/ossplugin.csi.alibabacloud.com
name: oss-provisioner-dir
- mountPath: /var/addon
name: addon-token
readOnly: true
- mountPath: /mnt
mountPropagation: Bidirectional
name: host-dev
- mountPath: /host/etc
name: etc
dnsPolicy: ClusterFirst
hostPID: true
priorityClassName: system-node-critical
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: csi-admin
serviceAccountName: csi-admin
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master
operator: Exists
- effect: NoSchedule
key: node.cloudprovider.kubernetes.io/uninitialized
operator: Exists
volumes:
- emptyDir: {}
name: disk-provisioner-dir
- emptyDir: {}
name: nas-provisioner-dir
- emptyDir: {}
name: oss-provisioner-dir
- hostPath:
path: /var/log/
type: ""
name: host-log
- hostPath:
path: /etc
type: ""
name: etc
- hostPath:
path: /mnt
type: ""
name: host-dev
- name: addon-token
secret:
defaultMode: 420
items:
- key: addon.token.config
path: token-config
optional: true
secretName: addon.csi.token
$ kubectl get daemonset -n kube-system csi-plugin -o yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
annotations:
deprecated.daemonset.template.generation: "1"
creationTimestamp: "2023-07-06T02:19:34Z"
generation: 1
name: csi-plugin
namespace: kube-system
resourceVersion: "973931867"
uid: 31e97987-eed9-4397-9db0-e0bf3a774c3e
spec:
revisionHistoryLimit: 10
selector:
matchLabels:
app: csi-plugin
template:
metadata:
creationTimestamp: null
labels:
app: csi-plugin
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: type
operator: NotIn
values:
- virtual-kubelet
containers:
- args:
- --v=5
- --csi-address=/var/lib/kubelet/csi-plugins/diskplugin.csi.alibabacloud.com/csi.sock
- --kubelet-registration-path=/var/lib/kubelet/csi-plugins/diskplugin.csi.alibabacloud.com/csi.sock
image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/csi-node-driver-registrar:v2.3.1-038aeb6-aliyun
imagePullPolicy: IfNotPresent
name: disk-driver-registrar
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/kubelet
name: kubelet-dir
- mountPath: /registration
name: registration-dir
- args:
- --v=5
- --csi-address=/var/lib/kubelet/csi-plugins/nasplugin.csi.alibabacloud.com/csi.sock
- --kubelet-registration-path=/var/lib/kubelet/csi-plugins/nasplugin.csi.alibabacloud.com/csi.sock
image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/csi-node-driver-registrar:v2.3.1-038aeb6-aliyun
imagePullPolicy: IfNotPresent
name: nas-driver-registrar
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/kubelet/
name: kubelet-dir
- mountPath: /registration
name: registration-dir
- args:
- --v=5
- --csi-address=/var/lib/kubelet/csi-plugins/ossplugin.csi.alibabacloud.com/csi.sock
- --kubelet-registration-path=/var/lib/kubelet/csi-plugins/ossplugin.csi.alibabacloud.com/csi.sock
image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/csi-node-driver-registrar:v2.3.1-038aeb6-aliyun
imagePullPolicy: IfNotPresent
name: oss-driver-registrar
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 10m
memory: 16Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/kubelet/
name: kubelet-dir
- mountPath: /registration
name: registration-dir
- args:
- --endpoint=$(CSI_ENDPOINT)
- --v=2
- --driver=oss,nas,disk
env:
- name: KUBE_NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
- name: CSI_ENDPOINT
value: unix://var/lib/kubelet/csi-plugins/driverplugin.csi.alibabacloud.com-replace/csi.sock
- name: MAX_VOLUMES_PERNODE
value: "15"
- name: SERVICE_TYPE
value: plugin
image: registry-cn-beijing-vpc.ack.aliyuncs.com/acs/csi-plugin:v1.26.1-e45b407-aliyun
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 5
httpGet:
path: /healthz
port: healthz
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
name: csi-plugin
ports:
- containerPort: 11260
hostPort: 11260
name: healthz
protocol: TCP
readinessProbe:
failureThreshold: 5
httpGet:
path: /healthz
port: healthz
scheme: HTTP
initialDelaySeconds: 10
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 5
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 100m
memory: 128Mi
securityContext:
allowPrivilegeEscalation: true
privileged: true
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/kubelet/
mountPropagation: Bidirectional
name: kubelet-dir
- mountPath: /host/etc
name: etc
- mountPath: /var/log/
name: host-log
- mountPath: /host/usr/
name: ossconnectordir
- mountPath: /var/lib/container
mountPropagation: Bidirectional
name: container-dir
- mountPath: /dev
mountPropagation: HostToContainer
name: host-dev
- mountPath: /var/addon
name: addon-token
readOnly: true
- mountPath: /host/var/run/
name: fuse-metrics-dir
dnsPolicy: ClusterFirst
hostNetwork: true
hostPID: true
nodeSelector:
kubernetes.io/os: linux
priorityClassName: system-node-critical
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: csi-admin
serviceAccountName: csi-admin
terminationGracePeriodSeconds: 30
tolerations:
- operator: Exists
volumes:
- hostPath:
path: /var/run/
type: DirectoryOrCreate
name: fuse-metrics-dir
- hostPath:
path: /var/lib/kubelet/plugins_registry
type: DirectoryOrCreate
name: registration-dir
- hostPath:
path: /var/lib/container
type: DirectoryOrCreate
name: container-dir
- hostPath:
path: /var/lib/kubelet
type: Directory
name: kubelet-dir
- hostPath:
path: /dev
type: ""
name: host-dev
- hostPath:
path: /var/log/
type: ""
name: host-log
- hostPath:
path: /etc
type: ""
name: etc
- hostPath:
path: /usr/
type: ""
name: ossconnectordir
- name: addon-token
secret:
defaultMode: 420
items:
- key: addon.token.config
path: token-config
optional: true
secretName: addon.csi.token
```
- 常用命令
- 安装
- 安装Kubeadm
- 安装单Master集群
- 安装高可用集群(手动分发证书)
- 安装高可用集群(自动分发证书)
- 启动参数解析
- certificate-key
- ETCD相关参数
- Kubernetes端口汇总
- 安装IPv4-IPv6双栈集群
- 下载二进制文件
- 使用Kata容器
- 快速安装shell脚本
- 存储
- 实践
- Ceph-RBD实践
- CephFS实践
- 对象存储
- 阿里云CSI
- CSI
- 安全
- 认证与授权
- 认证
- 认证-实践
- 授权
- ServiceAccount
- NodeAuthorizor
- TLS bootstrapping
- Kubelet的认证
- 准入控制
- 准入控制示例
- Pod安全上下文
- Selinux-Seccomp-Capabilities
- 给容器配置安全上下文
- PodSecurityPolicy
- K8S-1.8手动开启认证与授权
- Helm
- Helm命令
- Chart
- 快速入门
- 内置对象
- 模板函数与管道
- 模板函数列表
- 流程控制
- Chart依赖
- Repository
- 开源的Chart包
- CRD
- CRD入门
- 工作负载
- Pod
- Pod的重启策略
- Container
- 探针
- 工作负载的状态
- 有状态服务
- 网络插件
- Multus
- Calico+Flannel
- 容器网络限速
- 自研网络插件
- 设计文档
- Cilium
- 安装Cilium
- Calico
- Calico-FAQ
- IPAM
- Whereabouts
- 控制平面与Pod网络分开
- 重新编译
- 编译kubeadm
- 编译kubeadm-1.23
- 资源预留
- 资源预留简介
- imagefs与nodefs
- 资源预留 vs 驱逐 vs OOM
- 负载均衡
- 灰度与蓝绿
- Ingress的TLS
- 多个NginxIngressController实例
- Service的会话亲和
- CNI实践
- CNI规范
- 使用cnitool模拟调用
- CNI快速入门
- 性能测试
- 性能测试简介
- 制作kubemark镜像
- 使用clusterloader2进行性能测试
- 编译clusterloader2二进制文件
- 搭建性能测试环境
- 运行density测试
- 运行load测试
- 参数调优
- Measurement
- TestMetrics
- EtcdMetrics
- SLOMeasurement
- PrometheusMeasurement
- APIResponsivenessPrometheus
- PodStartupLatency
- FAQ
- 调度
- 亲和性与反亲和性
- GPU
- HPA
- 命名规范
- 可信云认证
- 磁盘限速
- Virtual-kubelet
- VK思路整理
- Kubebuilder
- FAQ
- 阿里云日志服务SLS