- 首页 >
- 问答 >
-
智能运维 >
- Ubuntu上Kubernetes配置步骤是什么
Ubuntu上Kubernetes配置步骤是什么
小樊
44
2025-11-23 00:01:46
Ubuntu 上 Kubernetes 配置步骤
一 环境准备与前置条件
- 准备至少 2 核 CPU、4GB 内存、20GB 磁盘 的 64 位 Ubuntu 主机若干(1 台 Master,其余为 Worker)。
- 所有节点设置 主机名 与 /etc/hosts(便于解析):
sudo hostnamectl set-hostname k8s-master
echo “192.168.1.10 k8s-master” | sudo tee -a /etc/hosts
- 关闭 Swap:
sudo swapoff -a && sudo sed -i ‘/ swap / s/^/#/’ /etc/fstab
- 加载内核模块并开启桥接转发:
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay && sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
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-get update && sudo apt-get install -y chrony
sudo systemctl enable --now chrony
- 防火墙(测试环境可简化):
sudo ufw disable
以上为各节点通用前置配置,完成后重启一次以确保生效。
二 安装容器运行时与 Kubernetes 组件
- 安装容器运行时(推荐 containerd,亦可选择 Docker):
- containerd:
sudo apt-get update && sudo apt-get install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i ‘s/SystemdCgroup = false/SystemdCgroup = true/g’ /etc/containerd/config.toml
sudo systemctl restart containerd && sudo systemctl enable containerd
- Docker(如选择):
sudo apt-get update && sudo apt-get install -y docker.io
sudo systemctl start docker && sudo systemctl enable docker
- 添加 Kubernetes APT 源并安装组件(所有节点):
sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl
curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo “deb [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
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
sudo systemctl enable --now kubelet
上述步骤完成后,各节点已具备运行 Kubernetes 所需的基础组件与运行时。
三 初始化控制平面 Master 节点
- 初始化集群(按需替换参数):
sudo kubeadm init \
–apiserver-advertise-address=<MASTER_IP> \
–pod-network-cidr=10.244.0.0/16 \
–service-cidr=10.96.0.0/12 \
–image-repository=registry.aliyuncs.com/google_containers
常见可选项:–kubernetes-version(指定版本)、–control-plane-endpoint(高可用 VIP/域名)。
- 配置 kubectl(仅在 Master):
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
- 安装网络插件(以 Flannel 为例,Pod 网段需与上面一致):
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
- 验证:
kubectl get nodes
如初始化异常或中断,先执行 kubeadm reset 清理后再重试。
四 加入 Worker 节点
- 在 Master 上查看加入命令(token 有效期通常为 24 小时):
kubeadm token create --print-join-command
或查看现有 token:
kubeadm token list
- 在 Worker 节点执行输出的 kubeadm join 命令,例如:
sudo kubeadm join <MASTER_IP>:6443 --token --discovery-token-ca-cert-hash sha256:
- 回到 Master 验证:
kubectl get nodes
若 token 过期,可在 Master 重新创建后再加入。
五 常见问题与验证
- 组件版本与一致性:建议在所有节点锁定相同的 kubelet/kubeadm/kubectl 版本(使用 apt-mark hold)。
- cgroup 驱动一致:容器运行时与 kubelet 均使用 systemd(上文已配置)。
- 镜像拉取失败:可使用国内镜像仓库(如 registry.aliyuncs.com/google_containers)。
- 节点 NotReady:多因网络插件未就绪,检查 kube-flannel 是否 Running,Pod 网段是否匹配。
- 重置与重装:执行 kubeadm reset 后,清理 /etc/cni/net.d 等残留再初始化。
- 基础验证清单:
kubectl version --client && kubectl version --short
kubectl get nodes -o wide
kubectl get pods -A
以上检查可快速定位大多数部署初期问题。