K8s Statefulset DNS

#kubernetes #kubernetes-dns

#kubernetes #kubernetes-dns

Вопрос:

Я создаю пользовательский REDIS StatefulSet yaml. До сих пор я успешно развертывал приложение, но что-то не так с подчиненным устройством REDIS. Он не может найти мастер, и я не догадываюсь о причине неправильной конфигурации DNS.

Мой StatefulSet выглядит следующим образом:

 apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis-server
  namespace: scm
  labels:
    app.k8s/name: redis
    app.k8s/instance: server
spec:
  replicas: 3
  serviceName: redis-server
  
  selector:
    matchLabels:
      app.k8s/name: redis
      app.k8s/instance: server
  
  template:
    metadata:
      labels:
        app.k8s/name: redis
        app.k8s/instance: server
    spec:
      containers:
        - name: redis-server
          image: redis:6.0.9-alpine
          imagePullPolicy: IfNotPresent
          command: ["redis-server", "/data/conf/redis.conf"]
          ports:
            - name: redis
              containerPort: 6379
  

и безголовый сервис, который выглядит как:

 apiVersion: v1
kind: Service
metadata:
  name: redis-server-headless
  namespace: scm
  labels:
    app.k8s/name: redis
    app.k8s/instance: server
    app.k8s/part-of: gitlab
spec:
  type: ClusterIP
  clusterIP: None
  publishNotReadyAddresses: true
  ports:
    - name: server
      port: 6379
      protocol: TCP
      targetPort: redis
  selector:
    app.k8s/name: redis
    app.k8s/instance: server
  

Когда я делаю nslookup redis-server-headless , я могу найти IP-адреса, но когда я пытаюсь ping redis-server-0.redis-server-headless или ping redis-server-0.redis-server получаю сообщение об ошибке с неправильным адресом.

Чего мне не хватает?

Ответ №1:

Ваш serviceName из redis statefuleset должен быть redis-server-headless .