温馨提示×

Linux下Kubernetes部署步骤有哪些

小樊
41
2025-10-07 21:58:57
栏目: 智能运维

Linux下Kubernetes部署步骤(以kubeadm工具为例)

1. 准备工作

  • 环境检查:确保所有节点(Master/Worker)满足Kubernetes最低硬件要求(至少2GB RAM、2核CPU、20GB磁盘空间);确认节点间网络互通(可通过ping测试)。
  • 系统配置调整
    • 关闭Swap分区(Kubernetes依赖内存管理,Swap会导致性能问题):
      swapoff -a  # 临时关闭
      sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab  # 永久禁用(注释fstab中的swap行)
      
    • 关闭SELinux(避免与Kubernetes组件冲突):
      setenforce 0  # 临时关闭
      sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config  # 永久设置为permissive模式
      
    • 关闭防火墙(或放行Kubernetes相关端口,默认使用6443、10250等):
      systemctl stop firewalld && systemctl disable firewalld  # CentOS/Fedora
      systemctl stop ufw && systemctl disable ufw  # Ubuntu/Debian
      
    • 配置主机名与/etc/hosts(确保节点间可通过主机名解析):
      sudo hostnamectl set-hostname <master-node>  # 设置Master主机名
      sudo hostnamectl set-hostname <worker-node1> # 设置Worker1主机名
      # 在所有节点的/etc/hosts中添加节点IP与主机名映射
      echo "<master-ip> <master-node>" | sudo tee -a /etc/hosts
      echo "<worker1-ip> <worker-node1>" | sudo tee -a /etc/hosts
      
  • 安装依赖工具:确保所有节点安装apt-transport-httpsca-certificatescurlgnupg等基础依赖(以Ubuntu为例):
    sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
    

2. 安装Docker容器运行时

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

  • 添加Docker仓库并安装(以Ubuntu为例):
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io
    
  • 启动Docker并设置开机自启
    sudo systemctl enable --now docker
    
  • 验证Docker安装
    docker version  # 查看Docker版本及客户端/服务端状态
    

3. 安装Kubernetes核心组件(kubeadm、kubelet、kubectl)

kubeadm用于集群初始化,kubelet负责节点管理,kubectl用于命令行操作:

  • 添加Kubernetes仓库(以Ubuntu为例):
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list > /dev/null
    
  • 安装组件
    sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl  # 锁定版本(防止自动升级导致兼容性问题)
    
  • 验证组件安装
    kubeadm version  # 查看kubeadm版本
    kubelet --version  # 查看kubelet版本
    kubectl version --client  # 查看kubectl客户端版本
    

4. 初始化Master节点

Master节点是集群的控制平面,负责调度、API服务等核心功能:

  • 执行初始化命令(以Calico网络插件要求的CIDR为例):
    sudo kubeadm init --pod-network-cidr=192.168.0.0/16
    

    注:--pod-network-cidr需与后续安装的网络插件(如Calico)的CIDR一致,否则会导致网络无法通信。

  • 配置kubectl(用于管理集群):
    根据初始化输出的提示,将admin.conf复制到当前用户的.kube目录:
    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间的通信,常用插件包括Calico、Flannel、Weave Net等(以Calico为例):

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  • 验证网络插件状态
    kubectl get pods -n kube-system  # 查看kube-system命名空间下的网络插件Pod是否为Running状态
    

6. 加入Worker节点

Worker节点负责运行应用Pod,通过kubeadm join命令将Worker节点加入集群(需使用Master初始化时输出的命令):

  • 获取Join命令:在Master节点初始化完成后,终端会输出类似以下命令(需保存):
    kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    
  • 在Worker节点执行Join命令
    sudo kubeadm join <master-ip>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    
  • 验证Worker节点状态
    在Master节点执行kubectl get nodes,若Worker节点状态显示为Ready,则表示加入成功。

7. 验证集群状态

  • 查看节点状态
    kubectl get nodes  # 所有节点应显示为Ready
    
  • 查看Pod状态
    kubectl get pods --all-namespaces  # 所有系统Pod应显示为Running或Completed
    

8. 可选步骤:部署Kubernetes Dashboard(Web管理界面)

Dashboard提供可视化界面管理集群,部署命令如下:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
  • 创建访问Token(用于登录Dashboard):
    kubectl create serviceaccount dashboard-admin-sa
    kubectl create clusterrolebinding dashboard-admin-sa --clusterrole=cluster-admin --serviceaccount=default:dashboard-admin-sa
    kubectl get secret $(kubectl get sa dashboard-admin-sa -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token}}" | base64 -d
    
  • 访问Dashboard:通过kubectl proxy启动代理,然后在浏览器访问http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/,输入Token登录。

以上步骤为Kubernetes基础部署流程,生产环境中还需考虑高可用性(多Master节点)、安全加固(TLS证书、RBAC权限控制)、存储配置(PV/PVC)等高级需求。

0