How Can I Achieve Compatibility Between ExtendPathMode and Kubernetes client-go?
Application Scenarios
The Kubernetes pod structure does not contain ExtendPathMode. Therefore, when a user calls the API for creating a pod or deployment by using client-go, the created pod does not contain ExtendPathMode. CCE provides a solution to ensure compatibility with the Kubernetes client-go.
Solution
- When creating a pod, you need to add kubernetes.io/extend-path-mode to annotation of the pod.
- When creating a Deployment, you need to add kubernetes.io/extend-path-mode to kubernetes.io/extend-path-mode in the template.
The following is an example YAML of creating a pod. After the kubernetes.io/extend-path-mode keyword is added to annotation, the containername, name, and mountpath fields are matched, and the corresponding extendpathmode is added to volumeMount.
apiVersion: v1 kind: Pod metadata: name: test-8b59d5884-96vdz generateName: test-8b59d5884- namespace: default selfLink: /api/v1/namespaces/default/pods/test-8b59d5884-96vdz labels: app: test pod-template-hash: 8b59d5884 annotations: kubernetes.io/extend-path-mode: '[{"containername":"container-0","name":"vol-156738843032165499","mountpath":"/tmp","extendpathmode":"PodUID"}]' metrics.alpha.kubernetes.io/custom-endpoints: '[{"api":"","path":"","port":"","names":""}]' ownerReferences: - apiVersion: apps/v1 kind: ReplicaSet name: test-8b59d5884 uid: 2633020b-cd23-11e9-8f83-fa163e592534 controller: true blockOwnerDeletion: true spec: volumes: - name: vol-156738843032165499 hostPath: path: /tmp type: '' - name: default-token-4s959 secret: secretName: default-token-4s959 defaultMode: 420 containers: - name: container-0 image: 'nginx:latest' env: - name: PAAS_APP_NAME value: test - name: PAAS_NAMESPACE value: default - name: PAAS_PROJECT_ID value: b6315dd3d0ff4be5b31a963256794989 resources: limits: cpu: 250m memory: 512Mi requests: cpu: 250m memory: 512Mi volumeMounts: - name: vol-156738843032165499 mountPath: /tmp extendPathMode: PodUID - name: default-token-4s959 readOnly: true mountPath: /var/run/secrets/kubernetes.io/serviceaccount terminationMessagePath: /dev/termination-log terminationMessagePolicy: File imagePullPolicy: Always restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst serviceAccountName: default serviceAccount: default nodeName: 192.168.0.24 securityContext: {} imagePullSecrets: - name: default-secret - name: default-secret affinity: {} schedulerName: default-scheduler tolerations: - key: node.kubernetes.io/not-ready operator: Exists effect: NoExecute tolerationSeconds: 300 - key: node.kubernetes.io/unreachable operator: Exists effect: NoExecute tolerationSeconds: 300 priority: 0 dnsConfig: options: - name: timeout value: '' - name: ndots value: '5' - name: single-request-reopen enableServiceLinks: true
Parameter |
Type |
Description |
---|---|---|
containername |
String |
Name of a container. |
name |
String |
Name of a volume. |
mountpath |
String |
Mount path. |
extendpathmode |
String |
A third-level directory is added to the created volume directory/subdirectory to facilitate the obtaining of a single pod output file. The following types are supported.
|
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot