记一次 agent 安装 单节点 k8s

Ubuntu 24.04 上用 kubeadm 安装单机 Kubernetes(containerd + Calico)

用于复现与审计的安装笔记:在 Ubuntu 24.04.1 LTS(amd64)上使用 containerd + kubeadm 部署 单机 Kubernetes,并安装 Calico CNI


环境

  • OS:Ubuntu 24.04.1 LTS (amd64)

  • Kubernetes:v1.30.14(kubeadm/kubelet/kubectl)

  • Runtime:containerd 1.7.28(SystemdCgroup=true

  • CNI:Calico v3.27.3

  • 节点 IP:10.6.37.2


步骤

1) 内核模块与 sysctl

cat >/etc/modules-load.d/k8s.conf <<'EOF'
overlay
br_netfilter
EOF

cat >/etc/sysctl.d/99-kubernetes-cri.conf <<'EOF'
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF

modprobe overlay
modprobe br_netfilter
sysctl --system

2) 安装并配置 containerd

apt-get update
apt-get install -y ca-certificates curl gpg apt-transport-https containerd

mkdir -p /etc/containerd
containerd config default >/etc/containerd/config.toml

编辑 /etc/containerd/config.toml

SystemdCgroup = true

启动并检查:

systemctl enable --now containerd
systemctl restart containerd
containerd --version
systemctl --no-pager --full status containerd

3) 安装 kubeadm / kubelet / kubectl

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key \
 | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
chmod 0644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg

cat >/etc/apt/sources.list.d/kubernetes.list <<'EOF'
deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /
EOF

apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

systemctl enable --now kubelet

备注:若 kubectl version --short (该命令用于查看客户端异以及api-server版本)不可用,可用:

kubectl version --client=true --output=yaml

4) 关闭 swap

swapoff -a
sed -i.bak -r 's/^([^#].*\s+swap\s+.*)$/# \1/g' /etc/fstab

5) 预拉取镜像(建议)

kubeadm config images pull --cri-socket unix:///run/containerd/containerd.sock

6) 初始化控制面(kubeadm init)

Pod CIDR 选择 Calico 常用:192.168.0.0/16

kubeadm init \
 --kubernetes-version v1.30.14 \
 --pod-network-cidr=192.168.0.0/16 \
 --cri-socket unix:///run/containerd/containerd.sock

7) 配置 kubectl(root)

mkdir -p /root/.kube
cp -f /etc/kubernetes/admin.conf /root/.kube/config
chmod 0600 /root/.kube/config

export KUBECONFIG=/root/.kube/config
kubectl cluster-info
kubectl get nodes -o wide

8) 安装 CNI(Calico)并等待就绪

export KUBECONFIG=/root/.kube/config

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.3/manifests/calico.yaml

kubectl -n kube-system rollout status deploy/calico-kube-controllers --timeout=180s
kubectl -n kube-system rollout status ds/calico-node --timeout=300s

kubectl get nodes -o wide
kubectl get pods -A -o wide

9) 单机允许在 control-plane 节点调度业务 Pod

单机环境通常需要移除 control-plane taint:

export KUBECONFIG=/root/.kube/config

kubectl taint nodes --all node-role.kubernetes.io/control-plane-
## 找出集群中第一个node  并打印出80行信息
kubectl describe node "$(kubectl get nodes -o jsonpath='{.items[0].metadata.name}')" | sed -n '1,80p'

产物 / 变更(审计点)

  • /etc/modules-load.d/k8s.conf

  • /etc/sysctl.d/99-kubernetes-cri.conf

  • /etc/containerd/config.toml(设置 SystemdCgroup = true

  • /etc/apt/keyrings/kubernetes-apt-keyring.gpg

  • /etc/apt/sources.list.d/kubernetes.list

  • /etc/fstab(注释 swap 行;备份 /etc/fstab.bak

  • /etc/kubernetes/*kubeadm init 生成)

  • /root/.kube/config


验证

export KUBECONFIG=/root/.kube/config
kubectl get nodes -o wide
kubectl get pods -A


记一次 agent 安装 单节点 k8s
https://www.ysdy-zla.top//archives/agent-k8s
作者
nuoli
发布于
2026年03月22日
许可协议