记一次 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 --system2) 安装并配置 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=yaml4) 关闭 swap
swapoff -a
sed -i.bak -r 's/^([^#].*\s+swap\s+.*)$/# \1/g' /etc/fstab5) 预拉取镜像(建议)
kubeadm config images pull --cri-socket unix:///run/containerd/containerd.sock6) 初始化控制面(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.sock7) 配置 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 wide8) 安装 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 wide9) 单机允许在 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