在CentOS上部署Kubernetes并实现服务发现,主要依赖Kubernetes内置机制,步骤如下:
部署Kubernetes集群
使用kubeadm
初始化集群,安装网络插件(如Calico)确保Pod间通信:
sudo yum install -y kubeadm kubelet kubectl
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
创建Service资源
通过Service
定义服务访问策略,关联Pod(通过Label Selector),类型可选ClusterIP
(集群内访问)、NodePort
(节点端口访问)等:
# 示例:创建名为nginx-service的ClusterIP服务
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
启用DNS服务发现
service-name.namespace.svc.cluster.local
。kubectl apply -f https://raw.githubusercontent.com/coredns/deployment/master/kubernetes/coredns.yaml.sed
nslookup
命令测试服务域名解析:kubectl exec -it <pod-name> -- nslookup nginx-service.default.svc.cluster.local
环境变量辅助发现
Pod启动时会自动注入集群内Service的环境变量(SERVICE_NAME_SERVICE_HOST
和SERVICE_NAME_SERVICE_PORT
),可在应用中直接使用:
# 示例:在Pod中通过环境变量访问服务
curl http://$MY_SERVICE_SERVICE_HOST:$MY_SERVICE_SERVICE_PORT
高级场景(可选)
关键组件说明:
通过以上步骤,可在CentOS的Kubernetes集群中实现高效的服务发现与通信。