温馨提示×

Kubernetes集群搭建步骤

小樊
42
2025-10-20 16:41:59
栏目: 编程语言

Kubernetes集群搭建步骤

1. 环境准备

搭建Kubernetes集群前需完成基础环境配置,确保所有节点(Master/Worker)满足以下要求:

  • 节点规划:至少准备1台Master节点(控制集群)和1台Worker节点(运行应用),生产环境建议至少3台Master节点以保证高可用。
  • 操作系统:推荐使用CentOS 7/8、Ubuntu 18.04/20.04等Linux发行版(避免使用Windows节点)。
  • 网络配置:所有节点处于同一局域网,能互相通信;关闭防火墙或开放必要端口(如6443(kube-apiserver)、10250(kubelet)、30000-32767(Service端口)等)。
  • 硬件要求:每台节点至少2GB RAM、2核CPU、20GB以上存储(生产环境需根据业务规模扩容)。
  • 依赖工具:安装curlwgettargcc等基础工具(用于下载和解压组件)。

2. 安装Docker容器运行时

Kubernetes依赖容器运行时管理容器,推荐使用Docker(也可选择containerd、CRI-O):

  • 安装Docker:以CentOS为例,执行以下命令:
    sudo yum update -y sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker && sudo systemctl enable docker sudo docker run hello-world # 验证安装 
  • 配置权限:将当前用户加入docker组,避免每次使用Docker需输入sudo
    sudo usermod -aG docker $USER newgrp docker # 立即生效 
  • 其他节点:重复上述步骤,在所有Worker节点安装Docker。

3. 安装Kubernetes核心组件

Kubernetes的核心组件包括kubelet(节点代理)、kubeadm(集群初始化工具)、kubectl(命令行工具),需在所有节点安装:

  • 配置Kubernetes YUM源(CentOS为例):
    cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF 
  • 安装组件
    sudo yum install -y kubelet kubeadm kubectl sudo systemctl enable --now kubelet # 设置kubelet开机自启 
  • 其他节点:重复上述步骤,在所有Worker节点安装相同组件。

4. 初始化Master节点

Master节点是集群的控制中心,负责调度、管理集群状态:

  • 初始化Master:在Master节点执行以下命令(替换<Pod网络CIDR>,如10.244.0.0/16,需与后续网络插件配置一致):
    sudo kubeadm init --pod-network-cidr=<Pod网络CIDR> 
  • 配置kubectl:初始化完成后,执行以下命令配置kubectl(用于管理集群):
    mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config 
  • 验证Master状态:执行kubectl get nodes,此时Master节点状态应为NotReady(需等待网络插件安装后变为Ready)。

5. 部署网络插件

Kubernetes需要网络插件实现Pod间通信,常用插件包括Flannel(轻量级)、Calico(高性能):

  • 以Flannel为例:执行以下命令部署:
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 
  • 验证网络插件:执行kubectl get pods -n kube-system,检查网络插件Pod是否全部处于Running状态。

6. 加入Worker节点

Worker节点用于运行应用,通过kubeadm join命令加入集群:

  • 获取加入命令:Master节点初始化完成后,会输出类似以下命令(需保存):
    kubeadm join <Master_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash <HASH> 
  • 执行加入命令:在每台Worker节点执行上述命令,等待节点状态变为Ready

7. 验证集群状态

  • 检查节点状态:在Master节点执行kubectl get nodes,确认所有节点状态为Ready
  • 部署测试应用:部署一个Nginx应用验证集群功能:
    kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --type=NodePort --port=80 kubectl get pods,svc # 查看Pod和Service状态 
  • 访问应用:通过任意节点IP加NodePort(如http://<Node_IP>:31000)访问Nginx页面。

8. 后续配置(可选但推荐)

  • 配置RBAC:设置基于角色的访问控制,限制用户对集群资源的操作权限。
  • 部署监控工具:安装Prometheus+Grafana监控集群状态(如节点资源使用率、Pod运行状态)。
  • 部署日志系统:使用ELK(Elasticsearch+Logstash+Kibana)或Loki收集和分析应用日志。
  • 备份集群:定期备份etcd数据(集群状态存储),防止数据丢失。

0