сетевой режим Kubernetes-Host, физическая машина IP назначенный Pod

В производственной среде, внутренний контейнер некоторые приложения (например, датчиков) необходимо использовать физические ресурсы сетевого уровня (например, многоадресного потока). Это требует Kubernetes в Pod в режиме HOST, чтобы начать. Сетевой режим Kubernetes-HOST следующего эксперимента, эксплуатация и техническое обслуживание и дают некоторые предложения.

1, сеть Под

Каждый Pod будет по умолчанию загрузки боба-инфраструктура (или PAUSE) контейнера, контейнер в качестве эталона в общей сети. Другой контейнер службы после старта, будет принадлежать сетевой режим определяется как «» NetworkMode «:» Контейнер: pause_containerID «Это будет сделано во всех контейнерной сети Pod являются общими, и все контейнеры в Pod в. сеть то же самое, что они могут быть доступны через локальный адрес (локальный) другие пользователи порта контейнера. Kubernetes сетевая модель, каждый Под имеет плоскую общее пространство имен сети IP-, называется PodIP. от PodIP, Pod по сети может взаимодействовать с другими физическими машинами и контейнерами.

Под могут быть предусмотрены в сетевом режиме хоста, то есть, сеть хост-компьютер непосредственно, без виртуализации изоляции сети. В результате, все контейнеры в Pod непосредственно подвергаются сетевой среде хоста, на этот раз, это PodIP Pod ИС в узле. В принципе, когда сеть установлена ​​Pod хост, стручок устанавливаются в стручке-инфраструктура (или пауза) Узел сети сосуда, Pod других контейнеры в сетевой точке контейнера. Как следует (65070affecfc61 является контейнерным сервисом, f60a2ee415e3 стручка-инфраструктура для контейнера):

[root@k8s-node-3 ~]# docker inspect 65070affecfc6131b2385e5c40d4f21f73c343cc15e7983cdce8594e38ed020f | grep NetworkMode
            "NetworkMode": "container:f60a2ee415e301491f30ffc12855880273da6eded2526a5319eed72a92caef7f",
[root@k8s-node-3 ~]# docker inspect f60a2ee415e301491f30ffc12855880273da6eded2526a5319eed72a92caef7f  | grep NetworkMode
            "NetworkMode": "host",
[root@k8s-node-3 ~]#

2, начать выборку

[root@k8s-master yaml]# cat test-host.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: test-host
spec:
  replicas: 4
  template:
    metadata:
      labels: 
        name: test-host
    spec:
      containers:
      - name: test-host
        image: registry:5000/back_demon:1.0
        command:
        - /jboss/jboss-eap-6.1/bin/standalone.sh 
        ports:
        - containerPort: 8080
      hostNetwork: true

3, эксплуатация и техническое обслуживание опыт

3.1 Количество копий

Под для хоста-инициировано режима с развертыванием, может быть только один для каждого узла. Другими словами, режим хост-компьютера Под начать число копий не может быть больше, чем количество «целевого узла» и «целевой узел» относится к выбранному узлу запуска Pod, если не выбран (не указано nodeSelector), «целевая количество узла «является количество кластеров в узле всех доступных. Когда число копий больше, чем количество «целевой узел», дополнительный Pod будет оставаться в состоянии ожидания, он не может быть найден, потому что график запланировал узел.

В следующем примере, только четыре узла кластера, когда число копий устанавливаются на 5, состояние будет длиться Под было в состоянии Pending.

[root@k8s-master yaml]# kubectl get pod -o wide
NAME                         READY     STATUS    RESTARTS   AGE       IP             NODE
test-host-1108333573-11wbl   1/1       Running   0          17s       10.0.251.153   k8s-node-1
test-host-1108333573-2k35s   1/1       Running   0          17s       10.0.251.146   k8s-node-3
test-host-1108333573-lnlpy   1/1       Running   0          17s       10.0.251.222   k8s-node-4
test-host-1108333573-t6izr   1/1       Running   0          17s       10.0.251.155   k8s-node-2
test-host-1108333573-tf4mc   0/1      Pending   0          17s       <none>         

3.2 PodIP

Стручок PodIP является его IP узла, следующим образом:

[root@k8s-master yaml]# kubectl get pod -o wide
NAME                         READY     STATUS    RESTARTS   AGE       IP             NODE
test-host-1108333573-11wbl   1/1       Running   0          2h        10.0.251.153   k8s-node-1
test-host-1108333573-2k35s   1/1       Running   0          2h        10.0.251.146   k8s-node-3
test-host-1108333573-lnlpy   1/1       Running   0          2h        10.0.251.222   k8s-node-4
test-host-1108333573-t6izr   1/1       Running   0          2h        10.0.251.155   k8s-node-2

Хотя PodIP является NodeIP, но также может быть добавлен путем виртуальной сетевой службы в Kubernetes использоваться. Как следует:

[root@k8s-master yaml]# cat demon1/frontend-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: frontend-service
  labels:
    name: frontend-service
spec:
  type: NodePort
  ports:
  - port: 8080
    nodePort: 30002
  selector:
    name: frontend-service
[root@k8s-master yaml]# kubectl create -f test-host-svc.yaml 
service "test-host" created
[root@k8s-master yaml]# kubectl describe svc test-host 
Name:            test-host
Namespace:        default
Labels:            name=test-host
Selector:        name=test-host
Type:            NodePort
IP:            10.254.127.198
Port:            <unset>    8080/TCP
NodePort:        <unset>    30003/TCP
Endpoints:        10.0.251.146:8080,10.0.251.153:8080,10.0.251.155:8080 + 1 more...
Session Affinity:    None
No events.

После создания успешного, приложение внутри кластера виртуальной сети clusterIP: 10.254.127.198: 8080, чтобы получить доступ к серверным услугам, внешние кластерные приложения (например, браузеры) может nodeIP + NodePort для доступа к серверным услугам через.

3.3 порт размещение

3.3.1 Другие порты заняты стручок

Если же кластер, начните с развертыванием режима хоста (или RC) больше, если эти развертывания определены containerPort имеют одинаковое значение, то, Kubernetes бы проверить порт конфликта ресурсы. Примерами являются следующие:

[root@k8s-master yaml]# cat test-host.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: test-host
spec:
  replicas: 3
  template:
    metadata:
      labels: 
        name: test-host
    spec:
      containers:
      - name: test-host
        image: registry:5000/back_demon:1.0
        command:
        - /jboss/jboss-eap-6.1/bin/standalone.sh 
        ports:
        - containerPort: 8080
      hostNetwork: true
[root@k8s-master yaml]# cat test-host1.yaml 
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: test-host1
spec:
  replicas: 2
  template:
    metadata:
      labels: 
        name: test-host1
    spec:
      containers:
      - name: test-host1
        image: registry:5000/back_demon:1.0
        command:
        - /jboss/jboss-eap-6.1/bin/standalone.sh 
        ports:
        - containerPort: 8080
      hostNetwork: true
[root@k8s-master yaml]#  kubectl get pod -o wide
NAME                         READY     STATUS    RESTARTS   AGE       IP             NODE
test-host-1108333573-9oo55   1/1       Running   0          19m       10.0.251.155   k8s-node-2
test-host-1108333573-uc2v2   1/1       Running   0          19m       10.0.251.146   k8s-node-3
test-host-1108333573-vxezq   1/1       Running   0          19m       10.0.251.153   k8s-node-1
test-host1-6476903-q8e6o     0/1       Pending   0          19m       <none>         
test-host1-6476903-zmk5l     1/1       Running   0          19m       10.0.251.222   k8s-node-4

Под экспериментальной группой, количество доступного узла только четыре, а два развертывание - тест-хозяин, тест-host1 порт внешнего воздействия количества такого же --8080. Количество копий, которые вы хотите, чтобы начать в общей сложности два развертывания является 5, то это будет последний старт Pod был в состоянии Pending.

3.3.2 хост-порт занятости

При включении режима хоста развертывания (или RC) объявить порт, например 8080, если программа управления не-хост Kubernetes занимает порт 8080, на этот раз, чтобы проверить Kubernetes нет. Другими словами, запись по расписанию будет занимать только порт информационного Kubernetes кластера, и сделать соответствующую работу в момент проверки планирования. Но график не будет проверять информацию порта заполненности реального хоста. Это на самом деле очень разумно, узел кластера, как правило, несколько десятков тысяч, рассматриваются как простые блоки ресурсов обеспечивают вычислительные мощности, чтобы вычислить, что определяется центральным узлом. Там нет необходимости, нет необходимости в дополнительных сценах для запуска других программ на узле.

При использовании режима сетевого узла, следует отметить, что каждое приложение (как развертывание развертывания) должно иметь различные собственные фиксированные, порты и другие приложения, такие как кодер 9525 всегда фиксировано, исходный сервер 9537 и другие фиксированным навсегда , И после того, как хозяин сделал Kubernetes узла кластера, не попробовать это некластерные приложения для предоставления услуг.

3.4 Требования зеркального отображения

Вы должны начать с режимом хоста Pod, то требуется только когда зеркальное отображение портов, а один.

Под вообще будет только одна служба главного зеркала, зеркало в производственном бизнесе, необходимо только поместить одно приложение, это приложение только открыт один интерфейс. Например, мастер-приложений кодер узлов, есть две функции: 1) принимает поток многоадресной передачи, и управляет узлами обработки занимают порт 9525, 2) визуальный манипуляции интерфейсный порт 8080 занимают. Отличающееся тем, что групповой поток получил это, чтобы использовать сетевой хост режим. Разделение на два бизнес-рекомендации отражают, два развертывания развертывания развертывания. Получение многоадресного потока, который разделяется на зеркало, фиксированный порт 9525, используя режим хоста запускаются; визуальный интерфейс раскола в зеркало, начинается с сетевым режимом Kubernetes по умолчанию.

Опубликовано 115 оригинальных статей · вона похвала 67 · Просмотров 100,000 +

рекомендация

отblog.csdn.net/meifannao789456/article/details/103877109