news 2026/8/22 0:19:53

安装和使用K8S

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
安装和使用K8S

一、安装前准备(所有节点都要做)

1. 基础环境要求

# 系统

Ubuntu 20.04 / 22.04(推荐)

# 关闭 swap(必须)

sudo swapoff -a

sudo sed -i '/ swap / s/^/#/' /etc/fstab

内核参数与网络转发

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf

br_netfilter

EOF

sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

net.bridge.bridge-nf-call-ip6tables = 1

EOF

sudo sysctl --system

二、安装容器运行时(推荐 containerd)

sudo apt update

sudo apt install -y containerd

sudo mkdir -p /etc/containerd

containerd config default | sudo tee /etc/containerd/config.toml

# 关键:启用 systemd cgroup

sudo nano /etc/containerd/config.toml

· Ctrl + W

· · 搜索:

· · SystemdCgroup

找到这一段(位置在文件中后部):

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]

SystemdCgroup = false

改为:

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]

SystemdCgroup = true

保存退出:

Ctrl + O → 回车

Ctrl + X

三、安装 Kubernetes 组件(kubeadm 方式)

1. 添加官方源

sudo apt update

sudo apt install -y apt-transport-https ca-certificates curl

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/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.29/deb/ /' \

| sudo tee /etc/apt/sources.list.d/kubernetes.list

2.安装 kubeadm / kubelet / kubectl

sudo apt update

sudo apt install -y kubelet kubeadm kubectl

sudo apt-mark hold kubelet kubeadm kubectl

deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /

四、初始化集群(Master / Control Plane)

1. 初始化

sudo kubeadm init \

--pod-network-cidr=10.244.0.0/16

成功后会看到kubeadm join ...,这是工作节点加入用的。

出现这个问题 是 网络镜像问题

方案:提前拉镜像 + 使用国内镜像源

Step 1️⃣ 先重置失败状态(必须做)

sudo kubeadm reset -f

Step 2️⃣ 使用国内镜像源拉镜像(关键一步)

sudo kubeadm config images pull \

--image-repository registry.aliyuncs.com/google_containers \

--kubernetes-version v1.29.15

Step 3️⃣ 确认镜像都在本地了

sudo ctr -n k8s.io images ls | grep kube

你应该能看到类似:

registry.aliyuncs.com/google_containers/kube-apiserver:v1.29.15

registry.aliyuncs.com/google_containers/kube-controller-manager:v1.29.15

registry.aliyuncs.com/google_containers/kube-scheduler:v1.29.15

Step 4️⃣ 再次 init

sudo kubeadm init \

--pod-network-cidr=10.244.0.0/16 \

--image-repository registry.aliyuncs.com/google_containers

还有错误的地方

使用swapon --show

查看没有任何输出

使用systemctl status kubelet --no-pager

kubelet 是正常运行的(Active: running),所以这次 kubeadm init 失败并不是 kubelet 启不来。

根因:pause 镜像不一致,导致 PodSandbox 创建异常

之前的日志里有这一条(这是“关键信号”):

detected that the sandbox image "registry.k8s.io/pause:3.8"is inconsistent with that used by kubeadm.

It is recommended that using"registry.aliyuncs.com/google_containers/pause:3.9"as the CRI sandbox image.

containerd 里默认是 pause:3.8

kubeadm / v1.29 期望的是 pause:3.9

方案:

Step 1️⃣ 重置当前失败状态(必须)

sudo kubeadm reset -f

Step 2️⃣ 明确拉取正确的 pause 镜像

sudo ctr -n k8s.io images pull \

registry.aliyuncs.com/google_containers/pause:3.9

验证一下:

sudo ctr -n k8s.io images ls | grep pause

Step 3️⃣ 告诉 containerd:以后就用这个 pause 镜像(关键)

编辑 containerd 配置:

sudo nano /etc/containerd/config.toml

找到(或确认存在)这一段:

[plugins."io.containerd.grpc.v1.cri"]

sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

如果原来是 pause:3.8,改成 3.9

如果没有这一行,手动加上(放在该 section 下即可)。

改为:

sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

Ctrl + O
→ 底部会出现:File Name to Write: /etc/containerd/config.toml

直接按 Enter

Ctrl + X
→ 退出 nano,回到命令行

Step 4️⃣ 重启 containerd 和 kubelet

sudo systemctl restart containerd

sudo systemctl restart kubelet

确认 kubelet 仍然正常:

systemctl status kubelet --no-pager

kubelet 当前是“启动失败并在自动重试”的状态

方案:

Step 1️⃣ 彻底 reset 当前失败状态(必须)

sudo kubeadm reset -f

Step 2️⃣ 确认 containerd 的 pause 配置是刚才改过的

grep sandbox_image /etc/containerd/config.toml

必须看到:

sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"

Step 3️⃣ 重启 containerd(让 pause 生效)

sudo systemctl restart containerd

Step 4️⃣ 不要手动管 kubelet(关键点)

⚠️ 这一点非常重要:

不要 systemctl restart kubelet

不要纠结它现在是 running 还是 failed

kubelet 会在 kubeadm init 成功后自动稳定。

再次init

sudo kubeadm init \

--pod-network-cidr=10.244.0.0/16 \

--image-repository registry.aliyuncs.com/google_containers

成功后会看到kubeadm join ...,这是工作节点加入用的。

2. 配置 kubectl

mkdir -p $HOME/.kube

sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

验证:

kubectl get nodes

五、安装 Pod 网络插件(以 Flannel 为例)

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

kubectl get pods -n kube-system

等待,直到所有 Pod 为 Running。

六、Kubernetes 常用核心操作

1.Pod / Deployment

kubectl create deployment nginx --image=nginx

kubectl get pods

kubectl describe pod <pod-name>

我的pod-name是nginx-7854ff8877-jlw79

2.Service 暴露

kubectl expose deployment nginx \

--type=NodePort --port=80

kubectl get svc

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/19 14:37:29

3步搞定跨平台加密:crypto-js新手避坑指南

3步搞定跨平台加密&#xff1a;crypto-js新手避坑指南 【免费下载链接】crypto-js 项目地址: https://gitcode.com/gh_mirrors/cry/crypto-js 还在为加密代码在Node.js和浏览器中表现不一致而烦恼吗&#xff1f;crypto-js作为一款功能强大的JavaScript加密标准库&#…

作者头像 李华
网站建设 2026/8/19 13:38:59

7个关键OpenCode环境变量设置:新手快速上手指南

7个关键OpenCode环境变量设置&#xff1a;新手快速上手指南 【免费下载链接】opencode 一个专为终端打造的开源AI编程助手&#xff0c;模型灵活可选&#xff0c;可远程驱动。 项目地址: https://gitcode.com/GitHub_Trending/openc/opencode 还在为复杂的AI编程助手配置…

作者头像 李华
网站建设 2026/8/19 13:34:45

Material-UI实战指南:3个技巧让React开发效率翻倍

Material-UI实战指南&#xff1a;3个技巧让React开发效率翻倍 【免费下载链接】material-ui mui/material-ui: 是一个基于 React 的 UI 组件库&#xff0c;它没有使用数据库。适合用于 React 应用程序的开发&#xff0c;特别是对于需要使用 React 组件库的场景。特点是 React 组…

作者头像 李华
网站建设 2026/8/21 0:16:56

微乐校园pf信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着信息化建设的不断深入&#xff0c;校园管理系统的智能化需求日益增长。传统校园信息管理方式存在效率低、数据分散、维护成本高等问题&#xf…

作者头像 李华
网站建设 2026/8/21 2:32:14

Stable Diffusion 2 Depth:深度图生成的终极实战指南

Stable Diffusion 2 Depth&#xff1a;深度图生成的终极实战指南 【免费下载链接】stable-diffusion-2-depth 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/stable-diffusion-2-depth 深度图生成技术正在彻底改变AI图像编辑的格局&#xff0c;Stable Diffu…

作者头像 李华