Administrator
发布于 2026-08-12 / 4 阅读
0
0

第二章.安装前的准备-Pod概念1

来源链接:https://www.bilibili.com/video/BV1PbeueyE8V?spm_id_from=333.788.videopod.episodes&vd_source=0e85828f19fba96334ebaebea2da3e2f&p=7

【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 中添加三条配置:

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

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

  3. 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,核心配置项如下:
  1. 开启IPC共享模式:因Docker 1903版本后默认关闭IPC共享,需手动配置允许共享

  2. 指定Docker根目录:示例配置为/data/docker(默认路径为/var/lib/docker,可按需调整)

  3. 指定cgroup驱动为systemd(官方推荐配置)

  4. 日志配置:使用json-file日志驱动,限制单日志文件最大大小、最大保存日志文件数量

  5. 镜像仓库配置:指定国内镜像仓库加速地址、官方镜像仓库地址
    [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 容器启动步骤

  1. 启动pause基础容器:执行docker run --name pause -p 8080:80 -d [k8s.gcr.io镜像名],该镜像为K8s官方pause镜像,国内不可直接访问,需提前导入本地,作用是为Pod提供共享命名空间的基础

  2. 启动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命名空间,后台运行

  3. 启动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容器作为共享基础的原因:
  1. 稳定性更高:pause容器几乎无业务逻辑,仅负责初始化网络,宕机概率极低;若用业务容器(如nginx)作为共享基础,业务容器宕机会导致同Pod内所有容器不可用

  2. 僵尸进程回收: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设计中的核心价值。


评论