Невозможно telnet K8S ClientIP сервис со всех узлов - PullRequest
0 голосов
/ 30 апреля 2018

Я борюсь с сетью K8S, когда пытаюсь представить службу в кластере. В частности, мне нужно развернуть реестр частных контейнеров (через K8S) и выставить его как сервис clusterIP.

Чтобы сделать это, я следовал этой статье

На данный момент мне не нужен какой-то конкретный том, я просто хочу предоставить сервис внутри кластера.

Это файл POD yml:

apiVersion: v1
kind: Pod
metadata:
  name: registry
  labels:
    app: registry
  namespace: default
spec:
  containers:
  - name: registry
    image: registry:2
    imagePullPolicy: Always
    ports:
      - containerPort: 5000

Пока это мой служебный файл:

---
kind: Service
apiVersion: v1
metadata:
  name: registry
  namespace: default
spec:
  selector:
    app: registry
  ports:
    - port: 5000
      targetPort: 5000

Оба объекта созданы через kubectl create -f <FILE_NAME>

Это мои открытые услуги

NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
kubernetes   ClusterIP   10.43.0.1       <none>        443/TCP    55m
registry     ClusterIP   10.43.198.164   <none>        5000/TCP   10m

Пока это список моих услуг

Name:              kubernetes
Namespace:         default
Labels:            component=apiserver
                   provider=kubernetes
Annotations:       <none>
Selector:          <none>
Type:              ClusterIP
IP:                10.43.0.1
Port:              https  443/TCP
TargetPort:        6443/TCP
Endpoints:         172.31.5.173:6443
Session Affinity:  ClientIP
Events:            <none>


Name:              registry
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          app=registry
Type:              ClusterIP
IP:                10.43.198.164
Port:              <unset>  5000/TCP
TargetPort:        5000/TCP
Endpoints:         10.42.1.4:5000
Session Affinity:  None
Events:            <none>

Когда я запускаю telnet 10.43.198.164 5000 в том же узле, где развернут модуль, все работает нормально, а если я запускаю его на другом узле (это кластер из 2 узлов), команда остается добавленной.

Узлы - это экземпляры AWS ec2 с CentOS 7

Kubernetes находится под версией 1.8.3, развернутой через RANCHER RKE

Я нашел несколько проблем для этой проблемы, но ничего, что могло бы помочь мне исследовать проблему.

Здесь вы можете найти файл конфигурации RKE, использованный для создания экземпляра кластера

#{{ ansible_managed }}

nodes:
  - address: node1
    user: user
    role: [controlplane,worker,etcd]
    ssh_key_path: path
  - address: node2
    user: user
    role: [worker]
    ssh_key_path: path

ignore_docker_version: false

kubernetes_version: v1.10.1
network:
  plugin:flannel

Любая помощь? Спасибо.

1 Ответ

0 голосов
/ 30 апреля 2018

Не думаю, что эта проблема связана с реестром докеров. Похоже, это на сетевом уровне.

Отладочные вопросы:

  • Какой плагин CNI вы используете?
  • Можете ли вы связаться с модулем напрямую (telnet 10.42.1.4 5000)?
  • Готовы ли ваши узлы (kubectl get nodes) и системные модули (kubectl -n kube-system get pods)?
...