Не могу пропинговать другие модули по имени хоста на миникубе - PullRequest
0 голосов
/ 05 октября 2018

У меня есть набор состояний с двумя репликами.Это имя службы без заголовка: "gov-svc" Это ->

  1. .metadata.name: sts
  2. .metadata.namespace: по умолчанию
  3. .spec.serviceName: gov-svc
  4. .spec.template.spec.subdomain: gov-svc
  5. .spec.replicas: 2

Дозапуск statefulSet

kubectl get pods --all-namespaces
NAMESPACE     NAME                                    READY   STATUS             RESTARTS   AGE
kube-system   coredns-99b9bb8bd-qdnsb                 1/1     Running            0          4h
kube-system   etcd-minikube                           1/1     Running            0          4h
kube-system   kube-addon-manager-minikube             1/1     Running            0          4h
kube-system   kube-apiserver-minikube                 1/1     Running            0          4h
kube-system   kube-controller-manager-minikube        1/1     Running            1          4h
kube-system   kube-proxy-b9np6                        1/1     Running            0          4h
kube-system   kube-scheduler-minikube                 1/1     Running            0          4h
kube-system   kubernetes-dashboard-7db4dc666b-bsk8k   1/1     Running            0          4h
kube-system   storage-provisioner

После запуска обоих пакетов этого statefulSet из pod sts-0, ping результаты:

$ ping  sts-0.gov-svc.default.svc.cluster.local
PING sts-0.gov-svc.default.svc.cluster.local (172.17.0.11): 56 data bytes
64 bytes from 172.17.0.11: seq=0 ttl=64 time=0.051 ms
64 bytes from 172.17.0.11: seq=1 ttl=64 time=0.444 ms
^C
--- redis-cluster-exp-0-0.redis-cluster-exp.default.svc.cluster.local ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.051/0.247/0.444 ms

Но когда я пытаюсь ping sts-1 изsts-0, там написано:

$ ping sts-1.gov-svc.default.svc.cluster.local
ping: bad address 'sts-1.gov-svc.default.svc.cluster.local'

Мне нужно успешно пропинговать другие модули по имени хоста.Как я могу это сделать?

1 Ответ

0 голосов
/ 05 октября 2018

Вам необходимо создать headless service, чтобы иметь возможность пинговать реплики друг от друга в пределах StatefulSet.Что-то вроде:

apiVersion: v1
kind: Service
metadata:
  name: gov-svc-headless
  labels:
    your_label: your_value
spec:
  selector:
    your_label: your_value
  ports:
  - port: your_port
    name: transport
    protocol: TCP
  clusterIP: None <---

Примечание:

С селекторами Для безголовых сервисов, которые определяют селекторы, контроллер конечных точек создает записи конечных точек в API и изменяет конфигурацию DNS для возврата Aзаписи (адреса), которые указывают непосредственно на блоки, поддерживающие службу.

Примечание:

или службы без заголовка, которые не определяют селекторы, контроллер конечных точек не создает конечные точкизаписей.Однако система DNS ищет и настраивает:

записи CNAME для служб типа ExternalName.Записи для любых конечных точек, которые совместно используют имя со службой, для всех других типов.

Дополнительная информация: https://kubernetes.io/docs/concepts/services-networking/service/#headless-services

...