debain 单机部署 kubernetes

步骤 1:准备工作


  1. 关闭swap
1
2
3
sudo swapoff -a
# 永久关闭,vi /etc/fstab 注释掉swap那行


  1. 将桥接的ipv4流量传递到iptables链
1
2
3
4
5
6
7
8
9
10
sudo modprobe br_netfilter   ##生成bridge相关内核参数

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. 时间同步
1
2
3
sudo apt install -y chrony
sudo systemctl start chrony
sudo systemctl enable chrony

步骤 2:安装containerd

在 Debian 系统中配置 Docker 官方的 apt 仓库,可以按照以下步骤操作。Docker 官方提供了详细的文档,但以下是简化的步骤:


  1. 更新系统包
    首先,确保系统包是最新的:
1
2
sudo apt update
sudo apt upgrade -y

  1. 安装依赖工具
    安装 apt 工具所需的依赖包,包括 ca-certificatescurlgnupg
1
sudo apt install -y ca-certificates curl gnupg

  1. 添加 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

  1. 添加 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

  1. 更新 apt 包索引
    添加仓库后,更新 apt 包索引:
1
sudo apt update

  1. 安装containerd
1
2
3
sudo apt install -y containerd.io 
sudo systemctl enable containerd # 服务自起
sudo systemctl start containerd # 启动服务

  1. 配置containerd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo containerd  config default > /etc/containerd/config.toml  # 生成默认配置 如果是root权限用户

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


# 编辑Containerd的配置文件/etc/containerd/config.toml, 在[plugins."io.containerd.grpc.v1.cri".registry]下方添加config_path

[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d"

sudo systemctl restart containerd

  1. 配置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


  1. 安装依赖工具
    安装 curlapt-transport-https,这些工具用于下载 Kubernetes 仓库的 GPG 密钥和配置仓库:
1
sudo apt install -y curl apt-transport-https

  1. 添加 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


  1. 添加 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 上使用,也不需要更改。


  1. 更新 APT 缓存
    添加仓库后,更新 APT 缓存以加载新的仓库信息:
1
sudo apt update

  1. 安装 Kubernetes 工具**
    现在你可以安装 Kubernetes 相关工具了。常用的工具包括:
  • kubeadm:用于初始化 Kubernetes 集群。
  • kubectl:Kubernetes 命令行工具,用于管理集群。
  • kubelet:Kubernetes 节点代理,负责管理 Pod 和容器。

运行以下命令安装这些工具:

1
sudo apt install -y kubelet kubeadm kubectl

  1. 锁定工具版本(可选)
    为了防止 Kubernetes 工具自动更新到不兼容的版本,可以将它们锁定在当前版本:
1
sudo apt-mark hold kubelet kubeadm kubectl

如果需要解除锁定,可以运行:

1
sudo apt-mark unhold kubelet kubeadm kubectl

  1. 启动kubelet服务
1
2
sudo systemctl start kubelet
sudo systemctl enable kubelet

  1. 设置crictl连接 containerd
1
sudo crictl config --set runtime-endpoint=unix:///run/containerd/containerd.sock

  1. 初始化 Kubernetes 集群
1
2
## kubectl version --client # 查看版本
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. 创建目录
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

  1. 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 # 单节点

  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
# 确保所有 Pod 都处于 Running 状态。
kubectl run test-nginx --image=nginx --restart=Never
kubectl exec -it test-nginx -- curl google.com

### kubectl describe pod test-nginx
### 如果警告preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling.
### 说明默认创建有污点节点

1.移除节点的污点
如果这是一个单节点集群,并且您希望在该节点上运行普通 Pod,可以移除节点的污点。

1.1 查看节点污点
运行以下命令,查看节点的污点:
kubectl get nodes # 获取节点

kubectl describe node
替换为实际的节点名称。在输出中查找 Taints 部分。

1.2 移除污点
运行以下命令,移除节点的污点:

kubectl taint nodesnode-role.kubernetes.io/control-plane-
注意末尾的 - 表示移除污点。



debain 单机部署 kubernetes
http://blog.cjf-rb.top/2025/02/11/debain-单机部署-kubernetes/
作者
cjf
发布于
2025年2月11日
许可协议