news 2026/9/3 8:11:44

安装和使用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/9/2 19:17:42

ELMO驱动器命令:5个核心模块快速掌握工业自动化控制

ELMO驱动器命令&#xff1a;5个核心模块快速掌握工业自动化控制 【免费下载链接】ELMO驱动器命令中文手册 ELMO驱动器命令中文手册 项目地址: https://gitcode.com/Open-source-documentation-tutorial/85a08 ELMO驱动器作为工业自动化领域的核心设备&#xff0c;其命令…

作者头像 李华
网站建设 2026/9/2 19:17:51

BookLore组件库实战指南:构建高效图书管理系统的完整方案

BookLore组件库实战指南&#xff1a;构建高效图书管理系统的完整方案 【免费下载链接】BookLore BookLore is a web app for hosting and managing books on a home server. It allows users to view PDFs, eBooks, and track reading progress. With features like metadata m…

作者头像 李华
网站建设 2026/9/2 15:06:18

FactoryBluePrints蓝图库:3大核心技巧与终极解决方案

还在为戴森球计划中复杂的工厂布局头疼吗&#xff1f;FactoryBluePrints这个蓝图仓库能帮你解决所有烦恼&#xff01;作为一名资深戴森球玩家&#xff0c;我来为你揭秘如何在这个海量蓝图库中做出最佳选择&#xff0c;让你的工厂效率直线飙升&#xff01;&#x1f680; 【免费下…

作者头像 李华
网站建设 2026/9/2 19:17:51

Swin2SR超分辨率模型:让模糊图像重获清晰细节的智能解决方案

Swin2SR超分辨率模型&#xff1a;让模糊图像重获清晰细节的智能解决方案 【免费下载链接】swin2SR_classical_sr_x2_64 项目地址: https://ai.gitcode.com/openMind/swin2SR_classical_sr_x2_64 在数字时代&#xff0c;我们经常会遇到各种模糊图像问题&#xff1a;老照…

作者头像 李华
网站建设 2026/9/2 19:17:51

ELMO驱动器完整操作指南:从入门到精通

ELMO驱动器完整操作指南&#xff1a;从入门到精通 【免费下载链接】ELMO驱动器命令中文手册 ELMO驱动器命令中文手册 项目地址: https://gitcode.com/Open-source-documentation-tutorial/85a08 ELMO驱动器作为工业自动化领域的核心组件&#xff0c;其命令手册是工程师日…

作者头像 李华
网站建设 2026/9/2 19:18:04

JustAuth第三方登录终极指南:一键接入50+主流平台

JustAuth第三方登录终极指南&#xff1a;一键接入50主流平台 【免费下载链接】JustAuth &#x1f3c6;Gitee 最有价值开源项目 &#x1f680;:100: 小而全而美的第三方登录开源组件。目前已支持Github、Gitee、微博、钉钉、百度、Coding、腾讯云开发者平台、OSChina、支付宝、Q…

作者头像 李华