Linux上Kubernetes安装指南
小樊
36
2025-12-16 09:18:30
Linux 上 Kubernetes 安装指南
一 环境准备与规划
- 节点规模:建议至少 3 台(1 个 Master + 2 个 Worker),每台至少 2GB 内存、2 核 CPU、20GB 存储,并保证节点间 网络互通。
- 操作系统:CentOS 7.x 或 Ubuntu 16.04+。
- 容器运行时:安装 Docker(或 Containerd,本文以 Docker 为例)。
- 网络规划:提前确定 Pod 网络 CIDR 与 Service CIDR,避免与现有网络冲突。
- 安全基线:准备 Kubernetes 仓库 GPG 公钥,用于安装 kubeadm/kubelet/kubectl。
以上为后续步骤的前置条件与通用规划。
二 使用 kubeadm 快速安装步骤
-
- 基础环境(所有节点)
- 关闭 SELinux(示例):
setenforce 0
sed -i “s/SELINUX=enforcing/SELINUX=disabled/g” /etc/selinux/config
- 禁用 Swap:
swapoff -a
sed -i ‘/ swap / s/^(.*)$/#\1/g’ /etc/fstab
- 开启内核转发与桥接相关参数:
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
sysctl --system
- 可选:按需配置防火墙放行 6443/10250/8472(UDP) 等端口,或临时关闭防火墙以便排障。
-
- 安装容器运行时(以 Docker 为例,所有节点)
- CentOS:
sudo yum install -y docker
sudo systemctl start docker && sudo systemctl enable docker
- Ubuntu:
sudo apt-get update && sudo apt-get install -y docker.io
sudo systemctl start docker && sudo systemctl enable docker
-
- 安装 kubeadm/kubelet/kubectl(所有节点)
- CentOS YUM 源(示例):
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/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
- Ubuntu 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-keyring.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 systemctl enable --now kubelet
-
- 初始化 Master 节点
- 拉取所需镜像(可选,提前排查拉取问题):kubeadm config images list
- 初始化(示例):
sudo kubeadm init
–apiserver-advertise-address=<MASTER_IP>
–image-repository=registry.aliyuncs.com/google_containers
–kubernetes-version=v1.23.0
–service-cidr=10.96.0.0/12
–pod-network-cidr=10.244.0.0/16
- 完成后按提示执行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
-
- 加入 Worker 节点
- 使用 kubeadm init 输出的 kubeadm join 命令在各 Worker 上执行,例如:
sudo kubeadm join <MASTER_IP>:6443 --token --discovery-token-ca-cert-hash sha256:
-
- 部署 Pod 网络插件
- 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 nodes(所有节点状态应为 Ready)
- kubectl get pods -A(核心组件与网络插件运行正常)
以上流程覆盖 kubeadm 的标准安装路径,包含镜像仓库加速与常见初始化参数示例。
三 快速替代方案
- Ubuntu 单节点/开发环境可使用 MicroK8s(基于 snap):
- 安装:sudo snap install microk8s --classic
- 启用常用组件:microk8s enable dashboard dns registry
- 状态与操作:microk8s status;microk8s kubectl get nodes
适合快速上手与功能验证。
四 常见问题与排查
- 节点 NotReady
- 检查 kubelet 与 容器运行时 是否运行:systemctl status kubelet / docker
- 确认 Pod 网络 CIDR 与网络插件已正确部署且只部署了一个网络插件
- 检查节点间 网络连通性 与必要的 防火墙/安全组 放行策略
- 镜像拉取失败
- 配置 Docker 镜像加速(如国内镜像源)
- 使用 kubeadm config images list 确认所需镜像版本,必要时提前拉取或指定 image-repository(如 registry.aliyuncs.com/google_containers)
- kubelet 启动异常
- 查看日志:journalctl -xeu kubelet
- 核对 cgroup 驱动 与系统参数(如 systemd/cgroups 配置)
以上为最常见的三类问题及处理方向。