Проблема развертывания Pod и запрос по кластеру Kubernetes - PullRequest
0 голосов
/ 01 октября 2019

Я создал кластер k8s и сеть, используя 1 мастер и 2 узла. Однако во время развертывания pod (nginx) развертывание происходит только на одном сервере, т.е. на узле 1, а не на другом сервере, т.е. на узле 2, как показано ниже o / p

[root@controller Kubernetes]# kubectl get pods -o wide
NAME    READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          10m   192.168.1.2   node1   <none>           <none>
[root@controller Kubernetes]#

, что означает, что nginx развернут только на узле 1а не на узле 2

Результат узлов, соединяющих основной файл

NAME         STATUS   ROLES    AGE    VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION               CONTAINER-RUNTIME
controller   Ready    master   142m   v1.16.0   192.168.33.20   <none>        CentOS Linux 7 (Core)   3.10.0-1062.1.1.el7.x86_64   docker://1.13.1
node1        Ready    <none>   134m   v1.16.0   192.168.33.10   <none>        CentOS Linux 7 (Core)   3.10.0-1062.1.1.el7.x86_64   docker://1.13.1
node2        Ready    <none>   46m    v1.16.0   192.168.33.30   <none>        CentOS Linux 7 (Core)   3.10.0-1062.1.1.el7.x86_64   docker://1.13.1
[root@controller Kubernetes]#

Pod:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
     name: nginx-web-application

spec:
  containers:
    - name: nginx-container
      image: nginx

Я хочу, чтобы развертывание происходило также на узле 2, когдая запускаю команду ниже, можете ли вы сказать, почему это не происходит на обоих узлах:

kubectl create -f pod.yml

Ответы [ 2 ]

2 голосов
/ 01 октября 2019

Ваша установка создает модуль с одним контейнером на одном из узлов (который определяется kube-scheduler ).

Если вы хотите запустить этот модуль на каждом узле, используйте DaemonSet , который обеспечивает запуск копии модуля на каждом узле.

Развертывание с 2 или более репликами должны работать, так как у вас есть два узла, если оба ваших узла способны запускать этот модуль (посмотрите kube-scheduler ).

И последнее - вы можете использовать портит и терпит . Проще всего было бы испортить ваш node1, чтобы на нем не разрешалось собирать блоки (пример из документации):

kubectl taint nodes node1 key:NoSchedule-
1 голос
/ 01 октября 2019

Стручок - это ровно одна копия контейнера (редко несколько тесно связанных контейнеров). Он будет работать только на одном узле.

Вы почти никогда не хотите напрямую использовать Pod;вместо этого, предпочтите объект контроллера более высокого уровня. Чаще всего вы будете использовать Deployment , который, как вы можете сказать, вы хотите например 3 реплики модуля, запущенного где-то в кластере. Если вам на самом деле нужна одна копия, работающая на каждом узле (обычно это требуется только для модулей инфраструктурного типа), то это модель DaemonSet .

...