Практические вопросы на основе этих концепций
- Понять конфигурации
- Понять SecurityContexts
- Определите требования к ресурсам приложения
- Создать и потребляйте секреты
- Понять сервисccounts
Упражнение
Перечислите все конфигураторы в кластере
kubectl get cm or kubectl get configmap
Создайте конфигурацию под названием myconfigmap с буквальным значением
kubectl create cm myconfigmap --from-literal=appname=myapp
Проверьте конфигурацию, мы только что создали, имеет эти данные
// you will see under data kubectl get cm -o yaml or kubectl describe cm
Удалить конфигурацию myconfigmap Мы только что создали
kubectl delete cm myconfigmap
Создайте файл под названием config.txt с двумя значениями и проверить файл
cat >> config.txt << EOF key1=value1 key2=value2 EOF cat config.txt
Создайте конфигурацию с именем keyValcfgmap и чтение данных из файла config.txt и убедитесь, что configmap создан правильно
kubectl create cm keyvalcfgmap --from-file=config.txt kubectl get cm keyvalcfgmap -o yaml
Создайте значения Nginx POD и значения среды нагрузки из вышеупомянутой Configmap KeyValcfgmap и выполните в POD и проверьте переменные среды и удалите POD
// first run this command to save the pod yml kubectl run nginx --image=nginx --restart=Never --dry-run -o yaml > nginx-pod.yml // edit the yml to below file and create apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx name: nginx spec: containers: - image: nginx name: nginx resources: {} envFrom: - configMapRef: name: keyvalcfgmap dnsPolicy: ClusterFirst restartPolicy: Never status: {} kubectl create -f nginx-pod.yml // verify kubectl exec -it nginx -- env kubectl delete po nginx
Создайте файл файлов env.env с помощью и создайте конфигурацию envcfgmap из этого файла env и проверить конфигурацию
echo var1=val1 > file.env cat file.env kubectl create cm envcfgmap --from-env-file=file.env kubectl get cm envcfgmap -o yaml --export
Создайте значения NGINX POD и значения среды нагрузки из вышеупомянутой Configmap EnvcFGMAP и выполните в POD и проверьте переменные среды и удалите POD
// first run this command to save the pod yml kubectl run nginx --image=nginx --restart=Never --dry-run -o yaml > nginx-pod.yml // edit the yml to below file and create apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx name: nginx spec: containers: - image: nginx name: nginx resources: {} env: - name: ENVIRONMENT valueFrom: configMapKeyRef: name: envcfgmap key: environment dnsPolicy: ClusterFirst restartPolicy: Never status: {} kubectl create -f nginx-pod.yml // verify kubectl exec -it nginx -- env kubectl delete po nginx
Создайте конфигурацию под названием CFGVolume со значениями и создайте POD NGINX с объемом Nginx-тома, который читает данные из этой конфигурации CFGVOLume и положить его на путь/etc/cfg.
// first create a configmap cfgvolume kubectl create cm cfgvolume --from-literal=var1=val1 --from-literal=var2=val2 // verify the configmap kubectl describe cm cfgvolume // create the config map apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx name: nginx spec: volumes: - name: nginx-volume configMap: name: cfgvolume containers: - image: nginx name: nginx resources: {} volumeMounts: - name: nginx-volume mountPath: /etc/cfg dnsPolicy: ClusterFirst restartPolicy: Never status: {} kubectl create -f nginx-volume.yml // exec into the pod kubectl exec -it nginx -- /bin/sh // check the path cd /etc/cfg ls
Создайте POD SESBUSYBOX с изображением Busybox, который выполняет команду Sleep 3600 и обеспечивает любые контейнеры в POD, все процессы выполняются с пользователем ID 1000 и с группой ID 2000 и проверки.
// create yml file with dry-run kubectl run secbusybox --image=busybox --restart=Never --dry-run -o yaml -- /bin/sh -c "sleep 3600;" > busybox.yml // edit the pod like below and create apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: secbusybox name: secbusybox spec: securityContext: # add security context runAsUser: 1000 runAsGroup: 2000 containers: - args: - /bin/sh - -c - sleep 3600; image: busybox name: secbusybox resources: {} dnsPolicy: ClusterFirst restartPolicy: Never status: {} kubectl create -f busybox.yml // verify kubectl exec -it secbusybox -- sh id // it will show the id and group
Создайте тот же POD, как указано выше на этот раз, установите SecurityContext для контейнера и убедитесь, что SecurityContext контейнера переопределяет уровень Security Security CodeContex.
// create yml file with dry-run kubectl run secbusybox --image=busybox --restart=Never --dry-run -o yaml -- /bin/sh -c "sleep 3600;" > busybox.yml // edit the pod like below and create apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: secbusybox name: secbusybox spec: securityContext: runAsUser: 1000 containers: - args: - /bin/sh - -c - sleep 3600; image: busybox securityContext: runAsUser: 2000 name: secbusybox resources: {} dnsPolicy: ClusterFirst restartPolicy: Never status: {} kubectl create -f busybox.yml // verify kubectl exec -it secbusybox -- sh id // you can see container securityContext overides the Pod level
Создайте POD с изображением NGINX и настройте POD с возможностями NET_ADMIN и SYS_TIME проверить возможности
// create the yaml file kubectl run nginx --image=nginx --restart=Never --dry-run -o yaml > nginx.yml // edit as below and create pod apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx name: nginx spec: containers: - image: nginx securityContext: capabilities: add: ["SYS_TIME", "NET_ADMIN"] name: nginx resources: {} dnsPolicy: ClusterFirst restartPolicy: Never status: {} kubectl create -f nginx.yml // exec and verify kubectl exec -it nginx -- sh cd /proc/1 cat status // you should see these values CapPrm: 00000000aa0435fb CapEff: 00000000aa0435fb
Создайте POD NGINX и укажите запрос на память и предел памяти 100MI и 200MI соответственно.
// create a yml file kubectl run nginx --image=nginx --restart=Never --dry-run -o yaml > nginx.yml // add the resources section and create apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx name: nginx spec: containers: - image: nginx name: nginx resources: requests: memory: "100Mi" limits: memory: "200Mi" dnsPolicy: ClusterFirst restartPolicy: Never status: {} kubectl create -f nginx.yml // verify kubectl top pod
Создайте POD NGINX и укажите запрос CPU и ограничение процессора 0,5 и 1 соответственно.
// create a yml file kubectl run nginx --image=nginx --restart=Never --dry-run -o yaml > nginx.yml // add the resources section and create apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx name: nginx spec: containers: - image: nginx name: nginx resources: requests: cpu: "0.5" limits: cpu: "1" dnsPolicy: ClusterFirst restartPolicy: Never status: {} kubectl create -f nginx.yml // verify kubectl top pod
Создайте POD NGINX и укажите как CPU, запросы на память и ограничения и проверки.
// create a yml file kubectl run nginx --image=nginx --restart=Never --dry-run -o yaml > nginx.yml // add the resources section and create apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx name: nginx spec: containers: - image: nginx name: nginx resources: requests: memory: "100Mi" cpu: "0.5" limits: memory: "200Mi" cpu: "1" dnsPolicy: ClusterFirst restartPolicy: Never status: {} kubectl create -f nginx.yml // verify kubectl top pod
Создайте POD NGINX и укажите запрос на память и предел памяти 100GI и 200GI соответственно, что слишком велико для узлов и проверки POD не может начать из-за недостаточной памяти
// create a yml file kubectl run nginx --image=nginx --restart=Never --dry-run -o yaml > nginx.yml // add the resources section and create apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx name: nginx spec: containers: - image: nginx name: nginx resources: requests: memory: "100Gi" cpu: "0.5" limits: memory: "200Gi" cpu: "1" dnsPolicy: ClusterFirst restartPolicy: Never status: {} kubectl create -f nginx.yml // verify kubectl describe po nginx // you can see pending state
Создать секрет MySecret со значениями и
kubectl create secret generic my-secret --from-literal=username=user --from-literal=password=mypassword
Перечислите секреты во всех пространствах имен
kubectl get secret --all-namespaces
Вывод YAML секрета, созданного выше
kubectl get secret my-secret -o yaml
Создайте POD NGINX, который читает имя пользователя в качестве переменной среды
// create a yml file kubectl run nginx --image=nginx --restart=Never --dry-run -o yaml > nginx.yml // add env section below and create apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx name: nginx spec: containers: - image: nginx name: nginx env: - name: USER_NAME valueFrom: secretKeyRef: name: my-secret key: username resources: {} dnsPolicy: ClusterFirst restartPolicy: Never status: {} kubectl create -f nginx.yml //verify kubectl exec -it nginx -- env
Создайте POD NGINX, который загружает секрет как переменные среды
// create a yml file kubectl run nginx --image=nginx --restart=Never --dry-run -o yaml > nginx.yml // add env section below and create apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx name: nginx spec: containers: - image: nginx name: nginx envFrom: - secretRef: name: my-secret resources: {} dnsPolicy: ClusterFirst restartPolicy: Never status: {} kubectl create -f nginx.yml //verify kubectl exec -it nginx -- env
Перечислите все учетные записи службы в пространстве имен по умолчанию
kubectl get sa
Список Все учетные записи службы во всех пространствах имен
kubectl get sa --all-namespaces
Создать учетную запись службы под названием Admin
kubectl create sa admin
Выведите файл YAML для учетной записи службы Мы только что создали
kubectl get sa admin -o yaml
Создайте PODBOX Bitebox, который выполняет эту команду Sleep 3600 с администратором службы Admin и проверить
kubectl run busybox --image=busybox --restart=Never --dry-run -o yaml -- /bin/sh -c "sleep 3600" > busybox.yml kubectl create -f busybox.yml apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: busybox name: busybox spec: serviceAccountName: admin containers: - args: - /bin/sh - -c - sleep 3600 image: busybox name: busybox resources: {} dnsPolicy: ClusterFirst restartPolicy: Never status: {} // verify kubectl describe po busybox
Оригинал: «https://dev.to/vijaydaswani/ckad-exam-practice-exercise-configuration-5gda»