首页 > 解决方案 > 为什么我的 Kubernetes 服务在不同的子网上运行?

问题描述

我有一个使用服务名称的 Spring Boot 和 PostgreSQL 通信问题。

我创建了一个使用 Calico 进行联网的集群,如下所示:

sudo kubeadm init --pod-network-cidr=192.168.0.0/16  --apiserver-advertise-address=178.12.1.10

并使用上述命令产生的输出加入工作节点。

当我部署 pod 和服务时,它们都在不同的子网上运行。我错过了什么吗?

kubectl get svc
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
backend-service     ClusterIP      10.110.149.43   <none>        8091/TCP      12s
postgres            ClusterIP      10.108.1.52     <none>        5432/TCP      14m

未生成服务端点。

kubectl get endpoints
NAME                   ENDPOINTS             AGE

backend-service                              20m
postgres               <none>                21m
kubectl get pods --all-namespaces
default       backend-service-6dbd64ff4d-gqkq8           0/1     CrashLoopBackOff   12         57m
default       postgres-7564bcc778-578fx                  1/1     Running            0          57m
kube-system   calico-etcd-b7wqf                          1/1     Running            1          2d3h
kube-system   calico-kube-controllers-74887d7bdf-wxhkd   1/1     Running            1          2d3h
kube-system   calico-node-689b5                          0/1     Running            0          47h
kube-system   calico-node-smkq5                          0/1     Running            1          47h
kube-system   coredns-86c58d9df4-7ncdk                   1/1     Running            1          2d3h
kube-system   coredns-86c58d9df4-g4jcp                   1/1     Running            1          2d3h
kube-system   etcd-kmaster                               1/1     Running            1          2d3h
kube-system   kube-apiserver-kmaster                     1/1     Running            1          2d3h
kube-system   kube-controller-manager-kmaster            1/1     Running            3          2d3h
kube-system   kube-proxy-njx5c                           1/1     Running            1          2d3h
kube-system   kube-proxy-pkxx5                           1/1     Running            1          2d3h
kube-system   kube-scheduler-kmaster                     1/1     Running            3          2d3h
kube-system   kubernetes-dashboard-57df4db6b-zcvcc       1/1     Running            1          2d3h

标签: postgresqlspring-bootkuberneteskubectlkubeadm

解决方案


您需要检查 API 服务器的 flag 指定的 service-cluster-ip-range CIDR。service clusterIP 是从 service-cluster-ip-range 分配的。

您已使用 --pod-network-cidr=192.168.0.0/16 初始化集群

请注意,pod-network-cidr 范围用于将 ip 地址分配给 pod。它与服务集群IP不同

您应该检查 api 服务器启动参数中定义的 service-cluster-ip-range


推荐阅读