温馨提示×

Ubuntu部署K8s有哪些步骤

小樊
93
2025-10-01 21:18:57
栏目: 智能运维

Ubuntu部署Kubernetes(K8s)详细步骤

1. 准备工作

  • 系统要求:Ubuntu 16.04及以上版本(推荐20.04+);所有节点(Master/Worker)具有静态IP;节点间网络互通(无防火墙阻拦或配置相应规则)。
  • 硬件要求:至少2核CPU、2GB内存、20GB以上磁盘空间(生产环境建议更高配置)。
  • 系统配置
    • 更新系统:sudo apt update && sudo apt upgrade -y
    • 关闭Swap分区(K8s要求):sudo swapoff -a,并注释/etc/fstab中的Swap行(避免重启后恢复);
    • 开启内核转发:创建/etc/sysctl.d/k8s.conf文件,添加以下内容并应用:
      net.bridge.bridge-nf-call-iptables = 1
      net.bridge.bridge-nf-call-ip6tables = 1
      net.ipv4.ip_forward = 1
      
      执行sudo sysctl --system生效;
    • 时间同步(可选但推荐):sudo apt install -y ntpdate && sudo ntpdate ntp.aliyun.com

2. 安装Docker容器运行时

K8s依赖容器运行时,Docker是常用选择(也可替换为containerd):

  • 添加Docker官方GPG密钥和仓库:
    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    
  • 安装Docker CE并启动服务:
    sudo apt update
    sudo apt install -y docker-ce
    sudo systemctl enable --now docker
    
  • 验证Docker状态:docker version(需显示Client/Server版本信息)。

3. 安装Kubeadm、Kubelet、Kubectl

这三个组件是K8s部署和管理的核心工具:

  • 添加Kubernetes官方APT仓库:
    curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpg
    echo "deb [signed-by=/etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    
  • 安装组件并锁定版本(防止自动更新):
    sudo apt update
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl  # 锁定版本
    
  • 验证安装:kubeadm versionkubelet versionkubectl version(需显示版本信息)。

4. 初始化Master节点

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

  • 执行初始化命令(替换<Master_IP>为Master节点实际IP,<pod-network-cidr>根据网络插件要求调整,如Flannel用10.244.0.0/16):
    sudo kubeadm init --apiserver-advertise-address=<Master_IP> --pod-network-cidr=<pod-network-cidr>
    
  • 初始化完成后,会输出kubeadm join命令(包含Token和CA证书哈希),需保存备用(用于Worker节点加入)。
  • 配置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. 部署网络插件

K8s需要网络插件实现Pod间通信,常用插件包括Flannel、Calico:

  • Flannel(轻量级,适合小集群)
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
  • Calico(高性能,支持网络策略)
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    
  • 验证网络插件:kubectl get pods -n kube-system(所有插件Pod状态应为Running)。

6. 加入Worker节点

Worker节点负责运行容器化应用,通过Master节点初始化时输出的kubeadm join命令加入:

  • 在Worker节点上执行(替换<Master_IP><token><sha256>为Master节点输出的对应值):
    sudo kubeadm join <Master_IP>:6443 --token <token> --discovery-token-ca-cert-hash sha256:<sha256>
    
  • 加入后,Worker节点会自动向Master注册,状态变为Ready(可通过Master节点的kubectl get nodes查看)。

7. 验证集群状态

  • 在Master节点上执行以下命令,检查集群整体状态:
    kubectl get nodes  # 查看节点状态(应为Ready)
    kubectl get pods -A  # 查看所有命名空间的Pod状态(应为Running)
    
  • 若所有节点状态为Ready,则说明K8s集群部署成功。

以上步骤为Ubuntu环境下使用kubeadm工具部署K8s的基础流程,生产环境中还需考虑高可用性(多Master节点)、安全性(TLS认证、RBAC权限控制)、监控与日志(Prometheus+Granafa、ELK)等进阶配置。

0