步骤 1:准备工作
- 关闭swap
- 将桥接的ipv4流量传递到iptables链
1 2 3 4 5 6 7 8 9 10
| sudo modprobe br_netfilter
sudo cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF
sudo sysctl --system
|
- 时间同步
1 2 3
| sudo apt install -y chrony sudo systemctl start chrony sudo systemctl enable chrony
|
步骤 2:安装containerd
在 Debian 系统中配置 Docker 官方的 apt 仓库,可以按照以下步骤操作。Docker 官方提供了详细的文档,但以下是简化的步骤:
- 更新系统包
首先,确保系统包是最新的:
1 2
| sudo apt update sudo apt upgrade -y
|
- 安装依赖工具
安装 apt 工具所需的依赖包,包括 ca-certificates、curl 和 gnupg:
1
| sudo apt install -y ca-certificates curl gnupg
|
- 添加 Docker 的 GPG 密钥
Docker 的 apt 仓库使用 GPG 密钥进行签名验证。添加 Docker 的官方 GPG 密钥:
1 2 3
| sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
|
- 添加 Docker 的
apt 仓库
将 Docker 的官方 apt 仓库添加到系统的源列表中:
1 2 3 4
| echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
- 更新
apt 包索引
添加仓库后,更新 apt 包索引:
- 安装containerd
1 2 3
| sudo apt install -y containerd.io sudo systemctl enable containerd sudo systemctl start containerd
|
- 配置containerd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| sudo containerd config default > /etc/containerd/config.toml
sudo bash -c "containerd config default > /etc/containerd/config.toml"
sudo sed -i 's|\(sandbox_image = \).*|\1"registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.10"|; s|\(SystemdCgroup = \).*|\1true|' /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".registry] config_path = "/etc/containerd/certs.d" sudo systemctl restart containerd
|
- 配置docker.io 镜像地址
1
| sudo mkdir -p /etc/containerd/certs.d/docker.io && echo -e 'server = "https://docker.unsee.tech"\n\n[host."https://docker.unsee.tech"]\n capabilities = ["pull", "resolve"]' | sudo tee /etc/containerd/certs.d/docker.io/hosts.toml > /dev/null
|
步骤 3:安装kubernetes
- 安装依赖工具
安装 curl 和 apt-transport-https,这些工具用于下载 Kubernetes 仓库的 GPG 密钥和配置仓库:
1
| sudo apt install -y curl apt-transport-https
|
- 添加 Kubernetes 官方 GPG 密钥
Kubernetes 官方提供了一个 GPG 密钥,用于验证从仓库下载的软件包。运行以下命令添加密钥:
1 2
| curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
|
- 添加 Kubernetes 仓库
将 Kubernetes 官方仓库添加到系统的 APT 源列表中:
1
| echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
|
注意:kubernetes-xenial 是仓库的名称,即使你在 Debian 上使用,也不需要更改。
- 更新 APT 缓存
添加仓库后,更新 APT 缓存以加载新的仓库信息:
- 安装 Kubernetes 工具**
现在你可以安装 Kubernetes 相关工具了。常用的工具包括:
kubeadm:用于初始化 Kubernetes 集群。kubectl:Kubernetes 命令行工具,用于管理集群。kubelet:Kubernetes 节点代理,负责管理 Pod 和容器。
运行以下命令安装这些工具:
1
| sudo apt install -y kubelet kubeadm kubectl
|
- 锁定工具版本(可选)
为了防止 Kubernetes 工具自动更新到不兼容的版本,可以将它们锁定在当前版本:
1
| sudo apt-mark hold kubelet kubeadm kubectl
|
如果需要解除锁定,可以运行:
1
| sudo apt-mark unhold kubelet kubeadm kubectl
|
- 启动kubelet服务
1 2
| sudo systemctl start kubelet sudo systemctl enable kubelet
|
- 设置crictl连接 containerd
1
| sudo crictl config --set runtime-endpoint=unix:///run/containerd/containerd.sock
|
- 初始化 Kubernetes 集群
1 2
| sudo kubeadm init --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version=v1.31.4 --service-cidr=10.15.0.0/16 --pod-network-cidr=10.18.0.0/16
|
- 创建目录
1 2 3
| mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
|
- helm安装cilium
1 2 3 4 5 6 7
| helm repo add cilium https://helm.cilium.io/ helm repo update helm install cilium cilium/cilium -n kube-system \ --set k8sServiceHost=192.168.33.163 \ --set k8sServicePort=6443 \ --set kubeProxyReplacement=true \ --set operator.replicas=1
|
- 确保 Cilium 已经成功安装并正常运行
1 2 3 4 5 6 7 8 9 10
| kubectl get pods -n kube-system -l k8s-app=cilium kubectl get pods -n kube-system -l name=cilium-operator
kubectl run test-nginx --image=nginx --restart=Never kubectl exec -it test-nginx -- curl google.com
|
1.移除节点的污点
如果这是一个单节点集群,并且您希望在该节点上运行普通 Pod,可以移除节点的污点。
1.1 查看节点污点
运行以下命令,查看节点的污点:
kubectl get nodes # 获取节点
kubectl describe node
替换为实际的节点名称。在输出中查找 Taints 部分。
1.2 移除污点
运行以下命令,移除节点的污点:
kubectl taint nodesnode-role.kubernetes.io/control-plane-
注意末尾的 - 表示移除污点。