温馨提示×

centos k8s部署如何实现服务发现

小樊
46
2025-11-01 21:28:13
栏目: 智能运维

在CentOS上部署Kubernetes(k8s)并实现服务发现,可以按照以下步骤进行:

1. 安装Kubernetes集群

首先,你需要在CentOS上安装Kubernetes集群。可以使用kubeadm工具来简化安装过程。

安装依赖包

sudo yum install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

初始化Kubernetes集群

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

配置kubectl

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

2. 安装网络插件

为了实现服务发现,你需要安装一个网络插件。常用的网络插件有Flannel、Calico等。

安装Flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

3. 部署应用

假设你已经有一个应用需要部署,并且希望实现服务发现。

创建Deployment和Service

创建一个简单的Nginx Deployment和Service。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

---

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

保存上述内容为nginx-deployment.yaml,然后应用:

kubectl apply -f nginx-deployment.yaml

4. 验证服务发现

获取Service的ClusterIP

kubectl get svc nginx-service

你应该会看到类似以下的输出:

NAME               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
nginx-service      ClusterIP   10.96.0.1       <none>        80/TCP         1m

访问应用

你可以使用kubectl port-forward来访问应用:

kubectl port-forward svc/nginx-service 8080:80

然后在浏览器中访问http://localhost:8080,你应该会看到Nginx的默认页面。

总结

通过以上步骤,你已经在CentOS上成功部署了一个Kubernetes集群,并实现了服务发现。你可以根据需要选择不同的网络插件,并根据实际应用需求调整Deployment和Service的配置。

0