Thank you for reading this post, don't forget to subscribe!
По умолчанию ваш кластер Kubernetes не будет планировать поды на ноде управления по соображениям безопасности.
Рекомендуется придерживаться этого, но для тестовых сред вы можете запланировать Pod на узле уровня управления, чтобы максимально использовать ресурсы.
Если вы хотите иметь возможность планировать модули на узле управления Kubernetes, вам нужно удалить taint на мастер нодах.
1 |
kubectl taint nodes --all <a class="vglnk" href="http://node-role.kubernetes.io/master-" rel="nofollow">node-role.kubernetes.io/master-</a> |
Вывод будет выглядеть примерно так:
1 2 3 4 |
node/k8smaster01.computingforgeeks.com untainted taint "<a class="vglnk" href="http://node-role.kubernetes.io/master" rel="nofollow">node-role.kubernetes.io/master</a>" not found taint "<a class="vglnk" href="http://node-role.kubernetes.io/master" rel="nofollow">node-role.kubernetes.io/master</a>" not found taint "<a class="vglnk" href="http://node-role.kubernetes.io/master" rel="nofollow">node-role.kubernetes.io/master</a>" not found |
Тестирование размещение подов на мастер нодах Kubernetes
1 2 3 4 5 6 |
$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8smaster01.test.ru Ready master 12h v1.17.0 k8snode01.test.ru Ready <none> 12h v1.17.0 k8snode02.test.ru Ready <none> 12h v1.17.0 k8snode03.test.ru Ready <none> 9h v1.17.0 |
Создайте тестовое пространство имен:
1 |
kubectl create namespace demo |
Создадим развертывание с 5 репликами.
1 |
$ vim nginx-deployment.yaml |
С таким содержимым:
[codesyntax lang="php"]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
--- apiVersion: apps/v1 kind: Deployment metadata: name: nginx namespace: demo labels: app: nginx color: green spec: replicas: 5 selector: matchLabels: app: nginx template: metadata: labels: app: nginx color: green spec: containers: - name: nginx image: nginx:latest imagePullPolicy: IfNotPresent ports: - name: http protocol: TCP containerPort: 80 resources: limits: cpu: "200m" memory: "256Mi" requests: cpu: 100m memory: 128Mi --- apiVersion: v1 kind: Service metadata: annotations: name: nginx-demo-service namespace: demo spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: nginx sessionAffinity: None type: NodePort |
[/codesyntax]
Применим манифест:
1 |
$ kubectl apply -f nginx-deployment.yaml |
Проверьте, запланированы ли поды на ноде управления:
1 2 3 |
$ <strong>kubectl get pods -n demo -o wide</strong> NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-675bf5bc87-666jg 1/1 Running 0 17m 192.168.213.131 k8snode01.<code>test.ru </code> nginx-675bf5bc87-mc6px 1/1 Running 0 17m 192.168.94.13 k8smaster01.<code>test.ru </code> nginx-675bf5bc87-v5q87 1/1 Running 0 17m 192.168.144.129 k8snode03.<code>test.ru </code> nginx-675bf5bc87-vctqm 1/1 Running 0 17m 192.168.101.195 k8snode02.<code>test.ru </code> nginx-675bf5bc87-w5pmh 1/1 Running 0 17m 192.168.213.130 k8snode01.<code>test.ru |
Мы видим, что на мастер ноде появился Под.
Давайте заодно проверим и службу:
1 2 3 |
$ kubectl get svc -n demo NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-service NodePort 10.96.184.67 <none> 80:31098/TCP 21m |
1 2 3 4 5 6 |
$ kubectl delete -f nginx-deployment.yaml deployment.apps "nginx" deleted service "nginx-service" deleted $ kubectl get pods,svc -n demo No resources found in demo namespace. |