centos

centos k8s部署如何进行服务发现

小樊
38
2025-08-10 21:04:54
栏目: 智能运维

在CentOS上部署Kubernetes并实现服务发现,主要依赖Kubernetes内置机制,步骤如下:

  1. 部署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  
    
  2. 创建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  
    
  3. 启用DNS服务发现

    • CoreDNS部署:Kubernetes默认使用CoreDNS解析服务域名,格式为service-name.namespace.svc.cluster.local
      kubectl apply -f https://raw.githubusercontent.com/coredns/deployment/master/kubernetes/coredns.yaml.sed  
      
    • 验证DNS:进入Pod通过nslookup命令测试服务域名解析:
      kubectl exec -it <pod-name> -- nslookup nginx-service.default.svc.cluster.local  
      
  4. 环境变量辅助发现
    Pod启动时会自动注入集群内Service的环境变量(SERVICE_NAME_SERVICE_HOSTSERVICE_NAME_SERVICE_PORT),可在应用中直接使用:

    # 示例:在Pod中通过环境变量访问服务  
    curl http://$MY_SERVICE_SERVICE_HOST:$MY_SERVICE_SERVICE_PORT  
    
  5. 高级场景(可选)

    • Ingress:管理外部HTTP/HTTPS访问,需配合Ingress Controller(如Nginx Ingress)。
    • Service Mesh(如Istio):适用于复杂微服务架构,提供流量管理、故障恢复等高级功能。

关键组件说明

通过以上步骤,可在CentOS的Kubernetes集群中实现高效的服务发现与通信。

0
看了该问题的人还看了