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

第三章.k8s安装-2

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

一、最后一台机器网络配置

完成集群第三台机器的双网卡配置,所有节点网卡配置规则一致:

  • 第一块网卡:设置为手动工作模式,配置固定IP、子网掩码、网关,DNS服务器用分号分割多个地址(如114.114.114.114、8.8.8.8),保存退出

  • 第二块网卡:关闭自动连接选项,保存退出

二、集群环境初始化前置操作说明

对照安装手册,此前通过系统快照已完成大部分基础环境配置,当前仅需补充少量操作:

  • 已完成操作:替换全量yum源为阿里云源、关闭firewalld防火墙、安装iptables并清空默认规则、关闭selinux、设置系统时区

  • 当前仅需额外完成:第一块网卡配置网关与DNS、关闭第二块网卡,后续重启时所有配置自动生效,可临时跳过设备重载步骤,前提是不影响功能与性能

三、节点基础配置

所有操作需在集群所有节点(1台master、2台node)上执行

3.1 关闭Swap分区

  • 临时关闭:执行swapoff -a,通过free -m验证swap分区大小为0,该配置重启后失效

  • 永久关闭:注释/etc/fstab文件中swap分区的挂载项,实现开机不挂载swap

  • 关闭原因:kubeadm初始化时会检测swap是否关闭,交换分区会降低软件运行效率,官方推荐关闭;若内存不足可初始化时跳过对应错误选项

3.2 修改主机名与Hosts映射

  • 主机名修改规则:master节点命名为k8s-master01,node节点分别命名为node01、node02,kubeadm会默认将主机名作为节点名称,修改后便于识别

  • 编辑/etc/hosts文件,添加IP与主机名的映射关系,同时提前添加后续要部署的harbor镜像仓库的域名映射,示例如下:


192.168.66.1 k8s-master01 m1

192.168.1.13 node01 n1

192.168.x.x node02 n2

harbor 192.168.x.x

  • 将第一台节点的/etc/hosts文件拷贝到其余两台节点,通过ping n1、ping n2验证hosts配置生效

3.3 安装ipvsadm

所有节点执行安装ipvsadm,用于后续k8s负载均衡相关功能
yum install -i ipvsadm

3.4 开启路由转发

将路由转发配置追加到/etc/sysctl.conf文件中,执行sysctl -p使配置生效,所有节点需执行
`echo ‘net.ipv4.ip_forward=1’ >> /etc/sysctl.conf``

3.5 安装网桥工具(可选)

安装bridge-utils网桥工具,用于后续网络调试,非强制要求,所有节点可选择性安装

3.6 加载br_netfilter模块

  • 将br_netfilter模块添加到开机自启加载文件,开启IPv4、IPv6下网桥流量经过防火墙回调的选项,是docker运行的必要配置
    yum install -y epel-release bridge-utils
    modprobe br_netfilter
    echo 'br_netfilter' >> /etc/modules-load.d/bridge.conf
    echo 'net_bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.conf
    echo 'net_bridge.bridge-nf-call-ip6tables=1' >> /etc/sysctl.conf
  • 配置完成后执行sysctl -p使配置生效,所有节点需执行

四、Docker CE安装与配置

所有操作需在集群所有节点上执行

4.1 添加Docker Yum源

  • 替换官方默认docker ce yum源为中科大源,提升国内下载速度

  • 备份原有的官方源文件并禁用,避免后期官方源不可用时无备用源

4.2 安装Docker CE

执行yum install -y docker-ce完成docker ce安装,kubeadm会以容器化方式启动k8s组件,因此必须安装容器运行时

4.3 配置Docker Daemon

编辑/etc/docker/daemon.json配置文件,配置项包括:

  • 指定docker数据存储目录

  • 设置cgroup驱动为systemd(docker官方推荐)

  • 日志以json格式保存,同时配置单日志文件最大大小、最大保留文件数

  • 添加信任的镜像仓库地址(对应后续部署的harbor仓库)

  • 配置docker镜像代理地址
    [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"] }

4.4 重启节点并验证网络

  • 创建docker配置目录,执行systemctl daemon-reload,重启docker并设置开机自启
    mkdir -p /etc/systemd/system/docker.service.d
    systemctl daemon-reload && systemctl restart docker && systemctl enable docker
  • 执行reboot重启所有节点,重启后验证:
  1. 通过ip addr show确认网卡IP配置正确,无异常IP

  2. 通过ping命令确认外网连通性正常

  3. 路由器后台确认所有节点已正常挂靠,网络拓扑符合生产环境要求

五、CRI-docker原理与安装

5.1 CRI与OCI接口背景说明

  • 早期k8s对接docker时,使用k8s自行维护的dockershim作为垫片,将CRI(容器运行时接口)翻译为docker支持的OCI(开放容器运行时接口),实现k8s对docker的调用

  • 后续k8s废弃了自行维护的dockershim,改为由docker官方维护CRI-docker项目承担垫片功能,因此若要在新版本k8s中使用docker作为容器运行时,需要额外部署CRI-docker

  • 接口逻辑:CRI是k8s定义的通用容器运行时接口,支持containerd、cri-o、rkt等多种容器运行时;OCI是开放容器标准接口,仅docker支持,k8s采用CRI接口可避免被docker绑定,适配更多运行时

5.2 CRI-docker安装步骤

所有操作需在集群所有节点上执行:

  1. 下载CRI-docker 0.6.9版本压缩包(提供下载地址),解压后将cri-docker可执行文件移动到/usr/local/bin目录,添加可执行权限

  2. 编写cri-docker服务管理脚本,核心启动参数包括:指定CNI网络插件、使用阿里云镜像源的pause容器(替代谷歌官方pause 3.8版本,提升国内访问速度)、创建套接字文件

[root@k8s-master01 ~]# cat /usr/lib/systemd/system/cri-docker.service
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
killMode=process
[Install]
WantedBy=multi-user.target

[root@k8s-master01 ~]# cat /usr/lib/systemd/system/cri-docker.socket
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target

  1. 执行systemctl daemon-reload,设置cri-docker开机自启,启动服务后检查存活状态确认运行正常
    systemctl enable cri-docker
    systemctl start cri-docker
    systemctl start cri-docker
    systemctl is-active cri-docker

AI 总结

本节完成了k8s集群所有节点的网络配置、基础环境初始化、Docker CE安装配置与CRI-docker部署,同时明确了CRI与OCI接口的背景逻辑,解决了新版本k8s对接docker的兼容性问题,全部前置配置完成后即可进入kubeadm初始化集群的阶段。


评论