- Обзор : Объем มอง ง่าย ๆ มัน คือ คือ жесткий диск ของ ของ มัน มัน คือ ของ ของ ของ ของ มี ทั้ง ที่ ถ้า pods ตาย แล้ว แบบ ที่ ถ้า pods ตาย แล้ว data หาย (эфемерные) และ данные ไม่ หาย (постоянные) โดย Kubernetes นั้น นั้น นั้น เพราะ หลาย หลาย ที่ เป็น แบบ นั้น เพราะ มี flexvolume และ csi ซึ่ง ทำ ให้ поставщик ต่าง ๆ สามารถ พัฒนา Библиотека ที่ Поддержка продукта ของ ตน เอง แล้ว นำ มา ต่อ กับ kubernetes ได้ เลย
- Представляем тома : Cubernetes Mount Volume ใน ระดับ Pods แสดง ว่า Контейнер ต่าง ๆ ที่ อยู่ ใน Pods จะ เห็น Volume เดียว กัน ขึ้น อยู่ กับ กับ กับ จะ จะ เลือก เอา อะไร ไป ใช้ การ การ การ ขึ้น อยู่ อยู่ разрешение ที่ เรา กำหนด ไว้ โดย โดย โดย Разрешение จะ เป็น ระดับ Узел เช่น
Readwriteonce
,Readonlymany
และReadWritemany
- Типы объемов : Kubernetes Поддержка Backend Storage ได้ หลากหลาย ชนิด เรียก ชนิด เหล่า นั้น ว่า
StorageClass
โดยStorageClass
นี้ เอง จะ เป็น คน ไป คุย กับ กับ กับ กับ กับ กับ เพื่อ เพื่อ เพื่อ ให้ ให้ ให้ ให้ ให้ - Спец : แสดง การ ใช้ งาน
пустоддир
ซึ่ง เป็นStorageClass
ที่ เป็น эфемерное хранение - Поделиться объемами : แสดง การ ใช้ 2 контейнеры ที่ อยู่ ใน POD เดียว กัน Mount Comply เดียว กัน กัน โดย จะ ว่า ว่า ทั้ง 2 контейнеры เห็น Data เดียว กัน
- Тома настойчивости и тома : ใน การ ใช้ งาน постоянный том ต้อง สร้าง pv ก่อน จาก นั้น สร้าง pvc เพื่อ จอง พื้นที่ จาก pv มา ใช้ จาก นั้น จึง จะ สามารถ สามารถ สามารถ ไป ให้ pods ใช้ งาน ได้ ได้
- Секреты : เป็น วิธี ช่วย ให้ pods การ เข้า ถึง data ได้ โดย secret จะ ถูก кодирует แบบ base64 โดย pods สามารถ ใช้ งาน Секрет ได้ ทั้ง แบบ Том และ Переменная среды
- Configmap : เป็น วิธี ช่วย ให้ pods การ เข้า ถึง data ได้ โดย configmap เป็น простой текст โดย Pods สามารถ ใช้ งาน configmap ได้ ทั้ง แบบ объем และ Переменная среды
Объем ก็ คือ хранение นั่น เอง มอง ง่าย ๆ มัน คือ жесткий диск ของ ของ ๆ มัน คือ คือ ของ ของ ของ ของ คือ โดย ทั่ว ไป ถ้า Контейнер ตาย หรือ หรือ ไป ถ้า ใน ใน นั้น ก็ จะ หาย ไป ใน ใน ไม่ ไม่ ใช้ จะ ผูก อยู่ กับ ถ้า ไม่ ใช้ ใช้ ใช้ ภาย ใน โดย ถ้า PODS มี หลาย Контейнер อยู่ ภาย ใน Контейнер นะ เห็น Том และ Данные เดียว กัน กัน
ถ้า ไม่ อยาก ให้ Data หาย สามารถ ใช้ Постоянные тома ได้ ซึ่ง PODS จะ ต้อง ทำ การ Утверждение Объем ผ่าน ทาง Утверждают постоянные тома
การ เขียน หรือ อ่าน อะไร ใน Volume จะ ต้อง ทำ ผ่าน ผ่าน ผ่าน ผ่าน ซึ่ง ซึ่ง v1.17 รอง รับ ถึง 28 ชนิด ไม่ ว่า จะ เป็น ceph, NFS หรือ Хранение ของ Облачные провайдеры เจ้า ต่างฟ ๆ ซึ่ง อาจ มี การ Установка ต่าง กัน ตาม ชนิด ของ Backend
Backend Storage ของ Kubernetes มี 2 แบบ คือ คือ
- в дереве : ส่วน ใหญ่ เป็น มา กับ กับ kubernetes มา อย่าง ยาวนาน โดย โดย โดย โดย จะ จะ ถูก построенный, связанный, скомпилированный และ поставляется มา กับ Core ของ Kubernetes เลย Backend ประเภท นี้ ค่อย ๆ ถูก Миграция ไป เป็น вне дерева
- вне дерева : หลัง จาก การ มา ของ FlexVolume ใน v1.2 และ Интерфейс для хранения контейнера (CSI) ใน v1.9 ทำ ให้ Code ของ Backend Storage ไม่ ต้อง รวม อยู่ ใน Core ของ ต้อง รวม อยู่ ใน ต่อ ของ ของ เจ้า ของ อีก ต่อ ต่อ ไป โดย เจ้า ของ ของ สามารถ Разработка เอง แล้ว ค่อย มา ต่อ กับ Kubernetes ด้วย วิธี นี้ ทำ ให้ Core ของ Kubernetes เบา ขึ้น และ เจ้า ของ Продукт สามารถ Исправление ошибки หรือ เพิ่ม Функция ได้ เอง โดย ไม่ ต้อง รอ มาก มาก Merge Code กับ Kubernets การ ทำ งาน ก็ จะ เร็ว ขึ้น ขึ้น
นอก จาก การ ใช้ Объем ที่ กล่าว ข้าง ต้น ยัง มี อีก 2 ทาง ใน การ นำ Data เข้า ไป ยัง Pods นั่น คือ
- Секрет : เป็น การ ส่ง ข้อมูล ที่ ถูก ถูก ถูก ถูก แล้ว แล้ว เข้า ไป ใน pods เช่น เช่น เช่น ไป ไป หรือ หรือ หรือ หรือ หรือ Сертификация HTTPS
- Configmap : เป็น การ ส่ง ข้อมูล ที่ ไม่ ถูก ถูก ถูก ถูก ถูก ถูก เข้า ใน pods เช่น файл конфигурации ต่าง ๆ
ใน 1 PODS สามารถ Mount ได้ หลาย Volume และ สามารถ คละ Тип бэкэнда ได้ และ เนื่อง จาก Volume ถูก Настоящий ใน ระดับ POD ดัง นั้น ต่าง ต่าง ต่าง กัน สามารถ เห็น Volume เดียว กัน ได้ อาจ ใช้ ท่า นี้ เพื่อ ใช้ ใน ทำ ทำ Containter Containter
นอก จาก นี้ Volume ยัง สามารถ ถูก เข้า ถึง ได้ จาก หลาย ๆ Pods พร้อม ๆ กัน และ สามารถ ให้ สิทธิ์ ที่ แตกต่าง กัน ได้ แต่ เนื่อง จาก จาก ไม่ กัน ได้ แต่ เนื่อง จาก จาก ไม่ มี Оптарежная проверка ดัง นั้น อาจ เกิด ปัญหา поврежденная หรือ Блокировка ได้
ใน การ กำหนด กำหนด Режим доступа ต้อง ทำ 2 ทาง คือ ที่ Volume เอง และ ตอน ที่ Pods Запрос претензии เข้า มา โดย Запрос จะ ต้อง ไม่ มาก กว่า สิทธิ์ ที่ Объем กำหนด ไว้ โดย Режим доступа มี ดัง นี้ นี้
- Readwriteonce : อนุญาติ ให้ อ่าน และ เขียน ได้ จาก จาก จาก จาก จาก จาก จาก (2 pods ที่ อยู่ อยู่ เดียว กัน สามารถ สามารถ чтение/запись ได้ พร้อม กัน แต่ Pods ที่ อยู่ ต่าง Узел Прочитайте/Написать ไม่ ได้ จะ ได้ Ошибка
Постоянныйathactachvolume
Несомненно - Readonlymany : อนุญาติ ให้ อ่าน อย่าง เดียว จาก หลาย ๆ Узел พร้อม ๆ ๆ กัน.
- ReadWritemany : อนุญาติ ให้ อ่าน และ เขียน ได้ จาก หลาย ๆ ๆ ๆ พร้อม ๆ ๆ ๆ กัน.
Kubernetes จะ จัด กลุ่ม ของ Volume ที่ มี Разрешение เหมือน กัน ไว้ และ Сортировать размер громкости จาก น้อย ไป หา มาก เมื่อ มี Запрос เข้า มา ก็ จะ เลือก Объем เหมาะสม ที่ สุด ให้ ไป
เมื่อ มี การ Запрос громкости
- API Server ของ Kubernetes จะ Запрос ขอ Хранение ไป ยัง
StorageClass
плагин และStorageClass
плагин จะ เป็น คน ไป คุย กับ กับ Backend Storage เอง - Kubelet จะ Map Roam Authents กับ Mount Point ใน Контейнер แลัว ทำ เป็น Символьная ссылка บน Хост-узел Filesystem เพื่อ ให้ Контейнер ใช้ งาน Хранение ได้
ถ้า เรา ไม่ ระบุ StorageClass
Kubernetes จะ เลือก Хранение อะไร ก็ ได้ ที่ เหมาะสม กับ Размер และ Режим доступа ที่ เรา ส่ง ไป กลับ มา ให้ เรา เรา
Kubernetes รองรับ Backend Storage ได้ หลากหลาย บาง อย่าง ใช้ ใน ใน local บาง อย่าง ต้อง ใช้ งาน ผ่าน ผ่าน ซึ่ง แต่ละ ชนิด ก็ มี ข้อดี ข้อ เสีย แต่ กัน ซัก หน่อย หน่อย มา ดู ตัวอย่าง กัน ซักซัก
- GCEPERSISTENTDISK : เป็น การ Mount Disk GCE บน Google Cloud Platform เข้า ไป ใน Pods
- awselasticlockstore. : เป็น การ Mount Disk EBS บน AWS เข้า ไป ใน Pods
- пустоддир : เป็น การ Mount Пустой каталог ให้ กับ Pods โดย Volume จะ เกิด และ ตาย ไป พร้อม กับ pod
- хозяин : เป็น การ Mount Resource จาก Хост เช่น Файл หรือ Directoty ให้ กับ Pods ซึ่ง ต้อง มี Ресурс ดัง กล่าว อยู่ ที่ Хост ก่อน ยกเว้น ถ้า เรา ใช้ опция
DirectoryRreate
หรือ.FileOrCreate
ที่ จะ สร้าง Ресурс ให้ Pods หาก ไม่ มี - NFS : เป็น การ Mount NFS (сетевая файловая система) ให้ กับ PODS (เหมาะ กับ несколько читателей)
- ISCSI : เป็น การ Mount ISCSI (SCSI над IP) ให้ กับ PODS (เหมาะ กับ несколько читателей)
- RBD : เป็น การ Устройство блочного устройства Mount RADOS ให้ กับ Подвигание (เหมาะ กับ несколько писателей)
- Cephfs : เป็น การ Установите громкость Cephfs ให้ กับ PODS (เหมาะ กับ несколько писателей)
- блестки : เป็น การ крепление Блеск (сетевая файловая система с открытым исходным кодом) ให้ กับ PODS (เหมาะ กับ несколько писателей)
สามารถ ดู Backend Storage เพิ่มเติม ได้ จาก Официальный документ
ตัวอย่าง การ Объем монтирования ง่าย ๆ คือ пустой โดย. пустоддир
คือ การ สร้าง Directory ภาย ใน ใน Контейнер นั่น เอง ไม่ ได้ ไป Mount ที่ ไหน การ เขียน Data จะ อยู่ ใน Общее контейнерное пространство ทำ ให้ ไม่ ไม่ ไม่ และ และ หาย ไป กับ การ ตาย ของ POD
apiVersion: v1 kind: Pod metadata: name: busybox namespace: default spec: containers: - image: busybox name: busy command: - sleep - "3600" volumeMounts: - mountPath: /scratch name: scratch-volume volumes: - name: scratch-volume emptyDir: {}
YAML-файл ข้าง ต้น เป็น การ สร้าง POD ที่ มี 1 + контейнер และ มี Volume ชื่อ Cratch-Volume Mount ไว้ ที/царапин ภาย ใน Контейнер
สามารถ ทดสอบ ได้ ดัง นี้ นี้
$ cat > busybox-emptyDir.yml << EOF apiVersion: v1 kind: Pod metadata: name: busybox namespace: default spec: containers: - image: busybox name: busy command: - sleep - "3600" volumeMounts: - mountPath: /scratch name: scratch-volume volumes: - name: scratch-volume emptyDir: {} EOF $ kubectl apply -f busybox-emptyDir.yml pod/busybox created $ kubectl get pods NAME READY STATUS RESTARTS AGE busybox 1/1 Running 0 9s $ kubectl exec -it busybox -- sh / # df -h /scratch Filesystem Size Used Available Use% Mounted on /dev/mapper/rhel-var 60.0G 2.5G 57.5G 4% /scratch / # exit $ kubectl delete -f busybox-emptyDir.yml pod "busybox" deleted
จาก ที่ เรา รู้ แล้ว ว่า ว่า ว่า ว่า ว่า ใน pod เดียว กัน จะ จะ Объем Области กัน หัวข้อ นี้ จะ มา ลง มือ ทำ กัน ดู ก่อน มา มา ดู yaml กัน ก่อน.
apiVersion: v1 kind: Pod metadata: name: busybox namespace: default spec: containers: - image: busybox name: busy command: - sleep - "3600" volumeMounts: - mountPath: /busy name: test - image: busybox name: box command: - sleep - "3600" volumeMounts: - mountPath: /box name: test volumes: - name: test emptyDir: {}
จาก YAML-файл ข้าง ต้น ใน POD มี 2 контейнеры ชื่อ Busy และ Box โดย แต่ละ Container Country Volume ชื่อ Test ไว้ ที่ Path/Busy และ/box ตาม ลำดับ เดี๋ยว เรา จะ ลอง เขียน อ่าน файл ดู กัน ว่า มัน เห็น เหมือน กัน ไหม
$ cat > busybox-sharedVolume.yml << EOF apiVersion: v1 kind: Pod metadata: name: busybox namespace: default spec: containers: - image: busybox name: busy command: - sleep - "3600" volumeMounts: - mountPath: /busy name: test - image: busybox name: box command: - sleep - "3600" volumeMounts: - mountPath: /box name: test volumes: - name: test emptyDir: {} EOF $ kubectl apply -f busybox-sharedVolume.yml pod/busybox created $ kubectl get pods NAME READY STATUS RESTARTS AGE busybox 2/2 Running 0 16s $ kubectl exec -it busybox -c box -- touch /box/foobar $ kubectl exec -it busybox -c busy -- ls /busy/ foobar $ kubectl delete -f busybox-sharedVolume.yml pod "busybox" deleted
Объем настойчивых (PV) คือ Хранение ที่ ถ้า PODS ตาย Data ก็ ยัง อยู่ การ Назначить тома ประเภท นี้ ให้ กับ Pods จะ ต้อง Определите ПерсистентВолюю
ก่อน จาก นี้ สร้าง PersiStenctvolumeclaim
(ПВХ) เพื่อ ขอ เฉือน Volume มา ให้ POD ใช้ จาก นั้น จึง ค่อย Прикрепите постоянный том ก้อน ที่ Утверждение มา ให้ กับ Pod
Жизненный цикл ของ объем และ претензия มี ดัง นี้ นี้
Предоставление : เป็น การ สร้าง pv โดย ทำ ได้ ทั้ง статическое และ динамическое
- Статики : admin Создать PV ทิ้ง ไว้ รอ ให้ Пользователи มา Претензия ไป ใช้
- Динамический : ถ้า ไม่ มี pv ไหน match กับ pvc เลย kubernetes จะ создать PV ให้ อันโนมัติ โดย кластер ต้อง ระบุ
Defaultstorageclass
ด้วย.
- Привязка : อาจ เป็น ช่วง ที่ กำลัง Match PVC กับ PV หรือ PV รอ ให้
StorageClass
Предоставление PV ขึ้น มา - Использование : เป็น ช่วง ที่ Pods Mount Volume ไป ใช้ แล้ว
- Выпуская : เป็น ช่วง ที่ pods ส่ง คำ สั่ง ไป เลิก ใช้ pvc และ ทำ การ Удалить PVC เมื่อ PVC ถูก ลบ ไป แล้ว data อาจ ยัง อยู่ หรือ ถูก ลบ ขึ้น อยู่ กับ
ПерсистентВолуМереклаимполит
Восстановление : เป็น ช่วง หลัง จาก จาก ที่ pvc ถูก Удалить เรียบร้อย โดย มี 3 варианта คือ
- Сохранить : ยัง เก็บ PV ไว้ อยู่ ให้ admin เอา ไป จัด การ เอง
- Удалить : ลบ pv และ Backend Storage ที่ выделить ให้ ไป ด้วย เลย เลย
- Перерабатывать : (устарел แล้ว) ลบ ข้อมูล ใน PVC ด้วย (
RM -RF/TheVolume/*
) จาก นั้น ก็ พร้อม สำหรับ การ ถูก претензия ใหม่
PV นั้น ไม่ ได้ อยู่ ใน пространство имен ใด пространство имен หนึ่ง แต่ PVC จะ อยู่ ได้ แค่ пространство имен เดียว เท่า นั้น
ตัวอย่าง การ Создать PV ชื่อ Task-PV-том ซึ่ง แบบ HostPath ขนาด 10 ГБ ใน Режим readwriteonce
$ cat > pv-volume.yaml << EOF apiVersion: v1 kind: PersistentVolume metadata: name: task-pv-volume labels: type: local spec: storageClassName: manual capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: "/mnt/data" EOF $ kubectl apply -f pv-volume.yaml persistentvolume/task-pv-volume created $ kubectl get pv task-pv-volume NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE task-pv-volume 10Gi RWO Retain Available manual 14s
ตัวอย่าง การ Создать ПВХ ชื่อ Task-PV-претензия ซึ่ง เฉือน มา ใช้ 3 ГБ ใน Режим readwriteonce
$ cat > pv-claim.yaml << EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: task-pv-claim spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 3Gi EOF $ kubectl apply -f pv-claim.yaml persistentvolumeclaim/task-pv-claim created $ kubectl get pv task-pv-volume NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE task-pv-volume 10Gi RWO Retain Bound default/task-pv-claim manual 6m23s $ kubectl get pvc task-pv-claim NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE task-pv-claim Bound task-pv-volume 10Gi RWO manual 75s
จะ เห็น ว่า PVC เปลี่ยน จาก Статус «Доступный» เป็น «связан»
ตัวอย่าง การ attch pvc ไป ยัง pods
# ที่ Master Node $ cat > pv-pod.yaml << EOF apiVersion: v1 kind: Pod metadata: name: task-pv-pod spec: volumes: - name: task-pv-storage persistentVolumeClaim: claimName: task-pv-claim containers: - name: task-pv-container image: nginx ports: - containerPort: 80 name: "http-server" volumeMounts: - mountPath: "/usr/share/nginx/html" name: task-pv-storage EOF $ kubectl apply -f pv-pod.yaml pod/task-pv-pod created $ kubectl get pod task-pv-pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES task-pv-pod 1/1 Running 0 71s 192.168.32.51 kube-0003.novalocal# login เข้าไปยังเครื่องที่ pods run อยู่ ในที่นี้คือ kube-0003.novalocal $ sudo sh -c "echo 'Hello from Kubernetes storage' > /mnt/data/index.html" $ cat /mnt/data/index.html Hello from Kubernetes storage # กลับไปยัง Master Node kubectl exec -it task-pv-pod -- /bin/bash root@task-pv-pod:/# apt update root@task-pv-pod:/# apt install curl root@task-pv-pod:/# curl http://localhost/ Hello from Kubernetes storage root@task-pv-pod:/# exit # Clean up $ kubectl delete pod task-pv-pod pod "task-pv-pod" deleted $ kubectl delete pvc task-pv-claim persistentvolumeclaim "task-pv-claim" deleted $ kubectl delete pv task-pv-volume persistentvolume "task-pv-volume" deleted # Login ไปยังเครื่องที่ สร้าง file ไว้ (kube-0003.novalocal) $ sudo rm /mnt/data/index.html $ sudo rmdir /mnt/data
ถึง แม้ Pods จะ สามารถ เข้า ถึง Data ต่าง ๆ ด้วย Volume แต่ ก็ มี บาง data ที่ เรา ไม่ อยาก ให้ เห็น ได้ ด้วย เช่น เช่น пароль หรือ Сертификация จึง มี Секрет เกิด ขึ้น มา โดย Secret จะ ถูก เก็บ ใน รูปแบบ รูปแบบ base64-encoded (по умолчанию)
แต่ เรา สามารถ Настройка ให้ มัน Шифрование ได้ โดย การ สร้าง EncryctionConfiguration
ด้วย Ключ และ Идентичность ที่ เหมาะสม จาก นั้น ทำ การ เพิ่ม Флаг TECHRYPTION-PROVYER-CONFIGE
ที่ ใช่ ระบุ วิธี การ Шифрование เช่น «aescdc» หรือ «KSM» ให้ กับ Kube-Apisiserver
แล้ว ทำ การ воссоздать секрет ใหม่ ทั้งหมด
ใน การ เปลี่ยน Ключ ต้อง สร้าง Key ใหม่ ก่อน แล้ว จึง Перезагрузка Kube-Apisiserver
ทุก ตัว จาก นั้น จึง воссоздать секрет ใหม่ ทั้งหมด
Kubernetes ไม่ ได้ จำกับ จำนวน Secret แต่ Secret ไม่ ควร มี ขนาด เกิน 1 MB โดย Secret จะ ถูก เก็บ ใน TMPFS
ซึ่ง เป็น память ดัง นั้น ถ้า มี เยอะ กิน ไป ก็ จะ เปลือง память ของ хост
เรา สามารถ создать секрет ได้ ดัง นี้
Создать ด้วย
Kubectl Создать секрет
Команда จาก ФайлСоздать ด้วย
Cubectl Create. секрет
команда จาก การ пройти аргументСоздать ด้วย YAML-файл แบบ Руководство
Создать ด้วย YAML-файл โดย ใช้
stringdata.
เรา สามารถ ใช้ งาน Secret ได้ ดัง นี้
ใช้ ใน รูปแบบ ของ файл ใน Pods
เรา สามารถ เลือก Mount บาง Файл แล้ว เปลี่ยน ที่ วาง และ ชื่อ файл ด้วย ได้ ดัง นี้
ใช้ ใน รูปแบบ ของ Переменная среды ใน PODS
$ cat > pod-with-mysecret-03.yaml << EOF apiVersion: v1 kind: Pod metadata: name: secret-env-pod spec: containers: - name: mycontainer image: redis env: - name: SECRET_USERNAME valueFrom: secretKeyRef: name: mysecret key: username - name: SECRET_PASSWORD valueFrom: secretKeyRef: name: mysecret key: password restartPolicy: Never EOF $ kubectl apply -f pod-with-mysecret-03.yaml pod/secret-env-pod created $ kubectl exec -it secret-env-pod -- bash root@secret-env-pod:/data# echo $SECRET_USERNAME admin root@secret-env-pod:/data# echo $SECRET_PASSWORD 1f2d1e2e67df root@secret-env-pod:/data# exit exit $ kubectl delete -f pod-with-mysecret-03.yaml pod "secret-env-pod" deleted
Configmap เหมือน Secret เลย ยกเว้น แค่ ไม่ ได้ ได้ ได้ เรา เรา ใช้ Configmap เพื่อ แยก файл конфигурации ออก มา จาก Изображение ของ Контейнер เพื่อ เวลา ที่ ต้องการ แก้ไข файл конфигурации จะ ได้ ไม่ ต้อง Создать изображение ใหม่ ซึ่ง จะ ทำ ให้ версия ของ изображение เพิ่ม ขึ้น โดย ไม่ ได้ มี การ แก้ไข код ด้วย ด้วย
Configmap สามารถ เก็บ ข้อมูล ได้ ทั้ง ใน รูปแบบ รูปแบบ Пара ключа-значения หรือ файл простого конфигурации
เรา สามารถ สร้าง configmap ได้ ดัง นี้
สร้าง จาก. Каталог
สร้าง จาก. Файл
สร้าง จาก буквальные значения
เรา สามารถ ใช้ งาน Configmap ได้ ดัง นี้
Назначить configmap ไป ยัง Переменная среды
Добавить Configmap เป็น Data ใน Volume
Оригинал: «https://dev.to/peepeepopapapeepeepo/lfs258-8-15-kubernetes-volumes-and-data-17de»