Uso de bucket de OBS en todas las regiones
De forma predeterminada, un pod puede usar bucket de OBS solo en la misma región. CCE permite que una carga de trabajo utilice bucket de OBS en todas las regiones, lo que puede mejorar la utilización de recursos en algunos escenarios, pero también puede dar como resultado una mayor latencia.
Restricciones
- OBS solo se puede utilizar en regiones en clústeres de CCE de v1.15 y v1.19.
- La versión del complemento más antiguo debe ser 1.2.32 o posterior.
- El nodo en el que se monta el almacenamiento debe poder acceder a los bucket de OBS. En general, Internet o Direct Connect se utilizan para acceder a los bucket de OBS en todas las regiones. Puede hacer ping al punto de conexión de OBS en el nodo donde se encuentra OBS para comprobar si OBS es accesible.
- Solo los PV pueden usar buckets de OBS en todas las regiones y, a continuación, se enlazan a PVC. La política de recuperación de energía de PV debe ser Retain. Las clases de almacenamiento no se pueden utilizar para crear de forma dinámica PVC para utilizar bucket de OBS en todas las regiones.
Procedimiento
- Cree el ConfigMap de paas-obs-endpoint y configure la región y el punto de conexión de OBS.
El nombre de ConfigMap se fija a paas-obs-endpoint y el espacio de nombres se fija a kube-system.
La región y el punto de conexión se establecen en el formato de pares clave-valor. Reemplace <region_name> y <endpoint_address> por valores específicos. For details, see Regiones y puntos de conexión. Utilice comas (,) para separar varios valores.
Ejemplo: {"ap-southeast-1": "https://obs.ap-southeast-1.myhuaweicloud.com:443", "ap-southeast-3": "https://obs.ap-southeast-3.myhuaweicloud.com:443"}
apiVersion: v1 kind: ConfigMap metadata: name: paas-obs-endpoint # The value must be paas-obs-endpoint. namespace: kube-system # The value must be kube-system. data: obs-endpoint: | {"<region_name>": "<endpoint_address>"}
- Cree un PV.
Establezca everest.io/region en la región donde se encuentra OBS.
kind: PersistentVolume apiVersion: v1 metadata: name: testing-abc annotations: pv.kubernetes.io/bound-by-controller: 'yes' pv.kubernetes.io/provisioned-by: everest-csi-provisioner spec: capacity: storage: 1Gi csi: driver: obs.csi.everest.io volumeHandle: testing-abc # OBS bucket name fsType: s3fs # obsfs indicates to create a parallel file system (recommended), and s3fs indicates to create an object bucket. volumeAttributes: everest.io/obs-volume-type: STANDARD everest.io/region: <region_name> # Region where the OBS bucket resides. Replace it with a specific value. storage.kubernetes.io/csiProvisionerIdentity: everest-csi-provisioner nodePublishSecretRef: # AK/SK used for mounting an OBS bucket name: test-user namespace: default accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain # The value must be Retain. storageClassName: csi-obs volumeMode: Filesystem
nodePublishSecretRef es la clave de acceso (AK/SK) utilizada para montar el volumen de almacenamiento de objetos. Necesita usar la AK/SK para crear un secreto, que se usará al crear un PV. Para obtener más información, véase Uso de una AK/SK personalizada para montar un volumen de OBS.
- Cree un PVC.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-test-abc namespace: default annotations: everest.io/obs-volume-type: STANDARD # OBS bucket type. Currently, standard (STANDARD) and infrequent access (WARM) are supported. csi.storage.k8s.io/fstype: s3fs # File type. obsfs indicates to create a parallel file system (recommended), and s3fs indicates to create an OBS bucket. volume.beta.kubernetes.io/storage-provisioner: everest-csi-provisioner spec: accessModes: - ReadWriteMany # For object storage, the value must be ReadWriteMany. resources: requests: storage: 1Gi # Storage capacity of a PVC. This field is valid only for verification (fixed to 1, cannot be empty or 0). The value setting does not take effect for OBS buckets. storageClassName: csi-obs # Storage class name. For object storage, the value is fixed to csi-obs. volumeName: testing-abc # PV name
- Cree una carga de trabajo, seleccione el PVC en la opción de almacenamiento de datos de la configuración de contenedor y agregue el PVC creado. Si la carga de trabajo se crea correctamente, el bucket de OBS se puede utilizar en todas las regiones.
apiVersion: apps/v1 kind: Deployment metadata: name: obs-deployment-example # Workload name namespace: default spec: replicas: 1 selector: matchLabels: app: obs-deployment-example template: metadata: labels: app: obs-deployment-example spec: containers: - image: nginx name: container-0 volumeMounts: - mountPath: /tmp # Mount path name: pvc-obs-example restartPolicy: Always imagePullSecrets: - name: default-secret volumes: - name: pvc-obs-example persistentVolumeClaim: claimName: pvc-test-abc # PVC name