在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集群中实现高效的服务发现与通信。