Kubernetes 安装 与配置完整指南
本指南详细介绍了两种主要的 Kubernetes 安装方法:kubeadm(生产级)和 Minikube(开发测试)。
主要内容
- kubeadm: 生产级集群安装工具
- Minikube: 单节点开发测试环境
使用 kubeadm 安装 Kubernetes
系统准备
基本要求
- 操作系统: 兼容的 Linux 主机(Debian、Red Hat 等)
- 内存: 每台机器 2GB 或更多 RAM
- CPU: 2 CPU 核或更多
- 网络: 集群中所有机器网络互通
- 交换分区: 必须禁用
禁用交换分区
# 临时禁用
sudo swapoff -a
# 永久禁用(编辑 /etc/fstab)
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
确保节点唯一性
检查 MAC 地址
# 方法1: 使用 ip link
ip link
# 方法2: 使用 ifconfig
ifconfig -a
检查 product_uuid
sudo cat /sys/class/dmi/id/product_uuid
配置网络
加载 br_netfilter 模块
# 检查模块是否加载
lsmod | grep br_netfilter
# 显式加载模块
sudo modprobe br_netfilter
配置 sysctl
# 创建配置文件
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 重新加载配置
sudo sysctl --system
安装容器运行时
支持的运行时
| 运行时 | 域套接字 |
|---|---|
| Docker | /var/run/dockershim.sock |
| containerd | /run/containerd/containerd.sock |
| CRI-O | /var/run/crio/crio.sock |
安装 Docker
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install docker.io
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
配置 Docker 守护进程
# 创建 Docker 配置目录
sudo mkdir -p /etc/docker
# 创建 daemon.json
sudo tee /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
# 重启 Docker
sudo systemctl restart docker
安装 kubectl
使用 curl 安装
# 下载最新版本
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 下载校验文件
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
# 验证
echo "$(<kubectl.sha256) kubectl" | sha256sum --check
# 安装
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# 清理临时文件
rm kubectl kubectl.sha256
# 验证安装
kubectl version --client
使用包管理器安装
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
# 添加 Kubernetes 密钥
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# 添加仓库
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
# 安装
sudo apt-get update
sudo apt-get install -y kubectl
使用 snap 安装
snap install kubectl --classic
安装 kubeadm、kubelet 和 kubectl
# 更新包索引
sudo apt-get update
# 安装依赖
sudo apt-get install -y apt-transport-https ca-certificates curl
# 添加 Google 密钥
curl -fsSL https://dl.k8s.io/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# 添加仓库
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://dl.k8s.io/apt/ /" | 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 kubeadm init
# 指定 pod 网络 CIDR(可选)
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
# 保存 join 命令
sudo kubeadm token create --print-join-command
配置 kubectl
# 普通用户
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 验证配置
kubectl cluster-info
# 查看节点
kubectl get nodes
安装网络插件
安装 Calico
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
安装 Flannel
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
安装 Weave Net
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
加入工作节点
# 在每个工作节点执行(使用之前保存的 join 命令)
sudo kubeadm join <master-ip>:<port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
# 示例
sudo kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:a1b2c3...
使用 Minikube 安装
Minikube 是在本地机器上运行单节点 Kubernetes 集群的简单方法。
安装 Minikube
下载并安装
# 下载最新版本
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# 安装
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 清理
rm minikube-linux-amd64
# 验证安装
minikube version
使用包管理器安装
# Ubuntu/Debian
curl -fsSL https://pkgs.k8s.io/addons/kubernetes/minikube/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-minikube-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-minikube-apt-keyring.gpg] https://pkgs.k8s.io/addons/kubernetes/minikube/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes-minikube.list
sudo apt-get update
sudo apt-get install -y minikube
# CentOS/RHEL
curl -fsSL https://pkgs.k8s.io/addons/kubernetes/minikube/rpm/Release.key | sudo gpg --dearmor -o /etc/pki/rpm-gpg/kubernetes-minikube-rpm-keyring.gpg
echo "deb [signed-by=/etc/pki/rpm-gpg/kubernetes-minikube-rpm-keyring.gpg] https://pkgs.k8s.io/addons/kubernetes/minikube/rpm/ /" | sudo tee /etc/yum.repos.d/kubernetes-minikube.repo
sudo yum install -y minikube
启动集群
基本启动
minikube start
指定驱动和资源
# 使用 Docker 驱动
minikube start --driver=docker
# 指定 CPU 和内存
minikube start --cpus=4 --memory=8192
# 使用 Kubernetes 版本
minikube start --kubernetes-version=v1.28.0
# 完整配置示例
minikube start \
--driver=docker \
--cpus=4 \
--memory=8192mb \
--disk-size=50g \
--kubernetes-version=v1.28.0