【K8s教程】笔记:第二章 安装前的准备 - Pod概念(Kubernetes v1.29)
1. Rocky Linux 9.3 系统初始化
1.1 网络配置
-
系统版本为Rocky Linux 9.3,默认使用NetworkManager替代旧版network服务实现网络管理
-
网卡配置文件路径为
/etc/NetworkManager/system-connections/下对应网卡名的文件,数值较小的网卡为第一块网卡 -
配置步骤:将IPv4的method从
auto改为manual,添加静态IP地址(示例:192.168.66.11/24,/24对应子网掩码255.255.255.0,为Cisco常用网络表达法),可按需配置gateway(网关)、DNS(多个DNS用分号分隔) -
网络生效命令:重启NetworkManager使配置生效
-
终端连接工具推荐使用Final Shell,XSHELL存在授权问题
1.2 基础环境优化
-
替换官方yum源为阿里云源解决速度慢的问题,执行
dnf makecache建立缓存(DNF是yum的继任者,二者均可用于软件包安装,官方推荐使用DNF) -
防火墙配置:临时关闭firewalld执行
systemctl stop firewalld,永久关闭执行systemctl disable firewalld;安装iptables服务,执行iptables -F清空默认规则,service iptables save持久化规则,systemctl enable iptables设置开机自启 -
SELinux配置:临时关闭执行
setenforce 0;永久关闭需修改/etc/selinux/config文件,将enforcing改为disabled,同时在内核参数中添加selinux=0,执行sysctl -p使配置生效,重启后SELinux完全关闭 -
时区配置:设置系统时区为中国时区
1.3 快照制作
-
完成上述初始化后关闭系统,拍摄虚拟机快照,命名为
just-install -
后续K8s集群的多台节点机器都需要基于该快照初始化,本教程后续将搭建3节点集群,对应机器IP为192.168.66.11、192.168.66.12、192.168.66.13
2. Docker 环境安装与配置
2.1 安装前置准备
-
安装epel源和bridge-utils工具包:
dnf install -y epel-release bridge-utils -
加载br_netfilter内核模块(作用:所有经过网桥的流量需被防火墙处理),将模块添加到开机自启文件
modprobe br_netfilter -
内核参数配置:在
/etc/sysctl.conf中添加三条配置:
-
net.bridge.bridge-nf-call-ip6tables = 1 -
net.bridge.bridge-nf-call-iptables = 1 -
net.ipv4.ip_forward = 1
- 执行
sysctl -p使内核参数生效
2.2 Docker CE 安装
-
替换Docker CE官方yum源为中科大源,同时备份官方源文件,防止后续中科大源不可用时可回退
-
执行
dnf install -y docker-ce安装最新稳定版Docker CE
2.3 Docker 配置
- 配置文件路径:
/etc/docker/daemon.json,核心配置项如下:
-
开启IPC共享模式:因Docker 1903版本后默认关闭IPC共享,需手动配置允许共享
-
指定Docker根目录:示例配置为
/data/docker(默认路径为/var/lib/docker,可按需调整) -
指定cgroup驱动为
systemd(官方推荐配置) -
日志配置:使用
json-file日志驱动,限制单日志文件最大大小、最大保存日志文件数量 -
镜像仓库配置:指定国内镜像仓库加速地址、官方镜像仓库地址
[root@k8s-master01 ~]# cat /etc/docker/daemon.json
{
“default-ipc-mode”: “shareable”,
“data-root”: “/data/docker”,
“exec-opts”: [“native.cgroupdriver=systemd”],
“log-driver”: “json-file”,
“log-opts”: {
“max-size”: “100m”,
“max-file”: “100”
},
“insecure-registries”: [“harbor.lihaonihao333.com”],
“registry-mirrors”: [“https://docker.m.daocloud.io”]
}
- 创建Docker服务管理目录,重启Docker服务,设置开机自启
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
3. 基于Docker模拟Pod的实验演示
3.1 实验准备
-
准备nginx配置文件
nginx.conf,核心配置如下: -
指定错误日志输出路径,错误信息输出到标准错误
-
设置worker进程数为1024
-
定义http区域,指定访问日志路径
-
配置监听80端口的默认服务器,域名为
example.com -
根路径
/反向代理到回环接口的3668端口
3.2 容器启动步骤
-
启动pause基础容器:执行
docker run --name pause -p 8080:80 -d [k8s.gcr.io镜像名],该镜像为K8s官方pause镜像,国内不可直接访问,需提前导入本地,作用是为Pod提供共享命名空间的基础 -
启动nginx容器:执行
docker run --name nginx -v 本地nginx.conf路径:/etc/nginx/nginx.conf --net container:pause --ipc container:pause --pid container:pause -d nginx,挂载本地配置文件,与pause容器共享网络、IPC、PID命名空间,后台运行 -
启动ghost容器:执行
docker run --name ghost -d --net container:pause --ipc container:pause --pid container:pause ghost,ghost为个人博客系统镜像,同样与pause容器共享网络、IPC、PID命名空间,后台运行
3.3 实验验证
-
执行
docker ps可看到三个容器均已正常运行 -
浏览器访问
192.168.66.11:8080可正常加载ghost博客页面,说明模拟的Pod运行正常
3.4 Pod设计逻辑讲解
- 选择独立pause容器作为共享基础的原因:
-
稳定性更高:pause容器几乎无业务逻辑,仅负责初始化网络,宕机概率极低;若用业务容器(如nginx)作为共享基础,业务容器宕机会导致同Pod内所有容器不可用
-
僵尸进程回收:pause容器代码为专门开发,支持回收僵尸进程;普通业务容器(如nginx)无此能力,会导致僵尸进程堆积
4. Pod 核心概念
-
Pod是Kubernetes中最小的调度、运行单元,不是K8s独有的固有实体,是一种逻辑概念
-
只要多个容器满足「共享网络、IPC、PID命名空间」的特性,即可被称为一个Pod
-
本实验中的pause、nginx、ghost三个容器共享三类命名空间,共同组成一个Pod
AI 总结
本视频首先完成了Rocky Linux 9.3系统的全流程初始化,包括网络配置、基础环境优化(yum源替换、防火墙配置、SELinux关闭、时区设置)、快照制作,为后续K8s集群搭建提供标准化基础环境;随后完成了Docker CE的安装与配置,包括前置内核参数调整、源替换、daemon.json核心配置;最后通过Docker多容器共享命名空间的实验,直观演示了Pod的核心定义与设计思路,明确了Pod是逻辑概念而非K8s独有实体,同时解释了pause容器在Pod设计中的核心价值。