簡體   English   中英

Kubernetes - 服務群集IP地址與Pod IP地址

[英]Kubernetes - service cluster IP address vs Pod IP address

我在Azure(ACS)上部署了一個帶Kubernetes的Postgres數據庫。

我使用了StatefulSet和Service。

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: postgres
spec:
  selector:
    matchLabels:
      app: postgres
  serviceName: "postgres"
  # 1 instance
  replicas: 1
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
      # Postgres database
      - name: postgres
        image: postgres:10
        ports:
        - containerPort: 5432
        volumeMounts:
          - name: pv-postgres
            mountPath: /var/lib/postgresql/data
        env:
        - name: POSTGRES_USER
          value: postgres
        - name: POSTGRES_DB
          value: tariffbook_db
        - name: PGDATA
          value: /var/lib/postgresql/data
        - name: POSTGRES_PASSWORD
          valueFrom:
            secretKeyRef:
              name: postgres-secret
              key: password
      hostname: postgres
      volumes:
      - name: pv-postgres
      # Upon node restart, restart the container
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  name: postgres
  labels:
    app: postgres
spec:
  ports:
  - port: 5432
    protocol: TCP
  selector:
    app: postgres

Kubernetes部署數據庫並將其注冊到kube-dns:

kubectl exec -ti busybox -- nslookup postgres
...
Name:      postgres
Address 1: 10.0.209.61 postgres.default.svc.cluster.local

現在當我ping postgres時,我沒有收到任何回復。

kubectl exec -ti busybox -- ping postgres
PING postgres (10.0.209.61): 56 data bytes

--- postgres ping statistics ---
14 packets transmitted, 0 packets received, 100% packet loss

可以通過其內部IP:10.244.0.46訪問Pod,但該服務不提供對postgres Pod的訪問。

kubectl get pod --all-namespaces -o wide
NAMESPACE     NAME                                            READY     
STATUS    RESTARTS   AGE       IP             NODE
default       azure-files-pod                                 1/1       
Running   0          19h       10.244.2.16    k8s-agent-52f7ae4d-1
default       busybox                                         1/1       
Running   12         12h       10.244.2.49    k8s-agent-52f7ae4d-1
default       postgres-0                                      1/1       
Running   0          1m        10.244.0.46    k8s-agent-52f7ae4d-0

我已經按照DNS疑難解答提示 ,但我沒有注意到DNS設置中的任何錯誤。

我的StatefulSet或Service中是否存在配置錯誤的內容?

非常感謝您的幫助 ! 最誠摯的問候,Eric MANUGUERRA

您只打開了端口5432,從不打開ping服務的端口。 如果您嘗試連接到端口5432,您應該能夠:

kubectl exec -ti busybox -- telnet postgres.default.svc.cluster.local 5432

或者(你真的不應該嘗試直接連接到IP)

kubectl exec -ti busybox -- telnet 10.0.209.61 5432

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM