温馨提示×

Ubuntu Kubernetes部署步骤是什么

小樊
44
2025-11-15 00:36:24
栏目: 智能运维

Ubuntu 上使用 kubeadm 部署 Kubernetes 的标准步骤

一 环境准备

  • 系统要求:建议使用 Ubuntu 20.04/22.04,每个节点至少 2GB RAM、2 CPU、20GB 磁盘,并确保节点间 IP 互通、主机名唯一。
  • 基础配置:
    • 更新系统:sudo apt update && sudo apt upgrade -y
    • 关闭 Swap:sudo swapoff -a && sudo sed -i '/ swap / s/^/#/g' /etc/fstab
    • 内核与转发:
      sudo tee /etc/sysctl.d/k8s.conf << EOF
      net.bridge.bridge-nf-call-iptables  = 1
      net.bridge.bridge-nf-call-ip6tables = 1
      net.ipv4.ip_forward                 = 1
      EOF
      sudo sysctl --system
      
    • 时间同步:sudo apt install -y ntpdate && sudo ntpdate ntp.aliyun.com
    • 主机名与 hosts:
      sudo hostnamectl set-hostname master(示例),并在所有节点编辑 /etc/hosts 添加各节点 IP-主机名 映射。
    • 防火墙:放行 6443、10250、2379-2380、10251、10252 等端口,或临时关闭防火墙以便部署。

二 安装容器运行时与 Kubernetes 组件

  • 安装容器运行时(Docker):
    sudo apt install -y docker.io
    sudo systemctl enable --now docker
    
  • 配置 Docker(使用 systemd cgroup 驱动):
    sudo mkdir -p /etc/docker
    cat >/etc/docker/daemon.json <<EOF
    {
      "exec-opts": ["native.cgroupdriver=systemd"],
      "log-driver": "json-file",
      "log-opts": { "max-size": "100m" },
      "storage-driver": "overlay2"
    }
    EOF
    sudo systemctl restart docker
    
  • 安装 kubeadm、kubelet、kubectl:
    sudo apt update
    sudo apt install -y apt-transport-https curl
    curl -fsSL 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 update
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl
    

三 初始化控制平面与配置 kubectl

  • 初始化 Master(示例命令,按需替换参数):
    sudo kubeadm init \
      --pod-network-cidr=10.244.0.0/16 \
      --apiserver-advertise-address=<MASTER_IP> \
      --control-plane-endpoint=<MASTER_IP或VIP/负载均衡地址>
    
    常见网络插件与 Pod CIDR 对应关系:
    • Calico:常用 192.168.0.0/16
    • Flannel:常用 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
    
  • 安装网络插件(二选一,保持与上面 CIDR 一致):
    • Calico:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    • Flannel:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • 加入 Worker 节点:使用 kubeadm init 输出中的 kubeadm join 命令在各 Worker 上执行,例如:
    sudo kubeadm join <MASTER_IP>:6443 --token <TOKEN> --discovery-token-ca-cert-hash sha256:<HASH>
  • 验证:kubectl get nodes(所有节点应为 Ready)。

四 快速验证与常用操作

  • 部署示例应用:
    kubectl create deployment nginx --image=nginx:1.25
    kubectl expose deployment nginx --type=NodePort --port=80
    kubectl get pods,svc
    
  • 常用管理命令:
    • 查看资源:kubectl get pods,svc,deployments --all-namespaces
    • 删除节点:kubectl delete node <node-name>
    • 组件升级:sudo apt-get update && sudo apt-get install -y kubelet kubectl && sudo systemctl restart kubelet

五 生产级建议与替代方案

  • 高可用控制平面:部署 多个 Master 节点,使用 负载均衡 暴露 API Server,确保 etcd 高可用。
  • 安全加固:启用 RBAC、配置 网络策略(NetworkPolicy)、开启 Pod Security 准入控制。
  • 持久化存储:按需配置 PV/PVC、StorageClass,对接云盘或本地存储。
  • 快速单机/测试:使用 MicroK8s
    sudo snap install microk8s --classic
    microk8s enable dashboard dns registry
    microk8s status
    

0