当前位置: 首页 > news >正文

CentOS二进制安装包方式部署K8S集群之系统初始化

目录

一、服务器基础配置

1、修改集群节点主机名称

2、修改集群节点主机/etc/hosts文件

3、集群节点创建基础目录

4、关闭防火墙

5、关闭selinux

6、关闭swap分区

(1)、K8s-controller节点

(2)、K8s-node01节点

(3)、K8s-node02节点

7、安装时间同步服务

(1)、K8s-controller节点

 (2)、K8s-node01节点

 (3)、K8s-node02节点

8、加载br_netfilter模块

9、优化内核参数

(1)、K8s-controller节点

(2)、K8s-node01节点

(3)、K8s-node02节点

二、Docker组件部署

1、K8s-node01节点

(1)、下载Docker安装文件

(2)、解压Docker安装文件

(3)、创建docker.service文件

(4)、创建docker配置文件

(5)、启动docker服务

2、K8s-node02节点

(1)、下载Docker安装文件

(2)、解压Docker安装文件

(3)、创建docker.service文件

(4)、创建docker配置文件

(5)、启动docker服务


 更多精彩博文详见:

《Linux系统应用运维》专栏总目录(持续更新)

        本文主要介绍了在CentOS 7系统下,使用二进制安装包方式部署K8S集群中主机系统初始化的相关内容。K8S集群节点规划如下:

主机名称IP部署组件
K8s-controller192.168.110.150kube-apiserver、kube-controller-manager、kube-scheduler
K8s-node01192.168.110.151kubelet、kube-proxy、容器运行时
K8s-node02192.168.110.152kubelet、kube-proxy、容器运行时

一、服务器基础配置

1、修改集群节点主机名称

  • 节点192.168.110.150:echo "K8s-controller" > /etc/hostname 
  • 节点192.168.110.151:echo "K8s-node01" > /etc/hostname
  • 节点192.168.110.152:echo "K8s-node02" > /etc/hostname

2、修改集群节点主机/etc/hosts文件

  • K8s-controller节点

[root@K8s-controller ~]# cat >> /etc/hosts << EOF
192.168.110.150 K8s-controller
192.168.110.151 K8s-node01
192.168.110.152 K8s-node02
EOF

  • K8s-node01节点

[root@K8s-node01 ~]# cat >> /etc/hosts << EOF
192.168.110.150 K8s-controller
192.168.110.151 K8s-node01
192.168.110.152 K8s-node02
EOF

  • K8s-node02节点

[root@K8s-node02 ~]# cat >> /etc/hosts << EOF
192.168.110.150 K8s-controller
192.168.110.151 K8s-node01
192.168.110.152 K8s-node02
EOF

3、集群节点创建基础目录

  • K8s-controller节点

[root@K8s-controller ~]# mkdir /K8s

  • K8s-node01节点

[root@K8s-node01 ~]# mkdir /K8s

  • K8s-node02节点

[root@K8s-node02 ~]# mkdir /K8s

4、关闭防火墙

此处为方便演示关闭防火墙,生产环境可根据实际情况开通服务器防火墙策略。

  • K8s-controller节点

[root@K8s-controller ~]# systemctl stop firewalld && systemctl disable firewalld

[root@K8s-controller ~]# systemctl stop iptables && systemctl disable iptables

  • K8s-node01节点

[root@K8s-node01 ~]# systemctl stop firewalld && systemctl disable firewalld

[root@K8s-node01 ~]# systemctl stop iptables && systemctl disable iptables

  • K8s-node02节点

[root@K8s-node02 ~]# systemctl stop firewalld && systemctl disable firewalld

[root@K8s-node02 ~]# systemctl stop iptables && systemctl disable iptables

5、关闭selinux

  • K8s-controller节点

[root@K8s-controller ~]# cat /etc/selinux/config | grep "SELINUX=" --color

[root@K8s-controller ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config

[root@K8s-controller ~]# getenforce

[root@K8s-controller ~]# setenforce 0

  • K8s-node01节点

[root@K8s-node01 ~]# cat /etc/selinux/config | grep "SELINUX=" --color

[root@K8s-node01 ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config

[root@K8s-node01 ~]# getenforce

[root@K8s-node01 ~]# setenforce 0

  • K8s-node02节点

[root@K8s-node02 ~]# cat /etc/selinux/config | grep "SELINUX=" --color

[root@K8s-node02 ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config

[root@K8s-node02 ~]# getenforce

[root@K8s-node02 ~]# setenforce 0

6、关闭swap分区

(1)、K8s-controller节点

  • 使用命令关闭swap分区

[root@K8s-controller ~]# swapoff -a

  • 注释/etc/fstab文件中的swap分区挂载配置

防止开机自动挂载swap分区

[root@K8s-controller ~]# vim /etc/fstab

(2)、K8s-node01节点

  •  使用命令关闭swap分区

[root@K8s-node01 ~]# swapoff -a

  • 注释/etc/fstab文件中的swap分区挂载配置

防止开机自动挂载swap分区

[root@K8s-node01 ~]# vim /etc/fstab

(3)、K8s-node02节点

  •  使用命令关闭swap分区

[root@K8s-node02 ~]# swapoff -a

  • 注释/etc/fstab文件中的swap分区挂载配置

防止开机自动挂载swap分区

[root@K8s-node02 ~]# vim /etc/fstab

7、安装时间同步服务

安装时间同步服务,确保各个集群节点时间同步一致。

(1)、K8s-controller节点

  • 安装时间同步服务

[root@K8s-controller ~]# yum -y install chrony

  • 开启时间同步服务

[root@K8s-controller ~]# systemctl start chronyd && systemctl enable chronyd
[root@K8s-controller ~]# systemctl status chronyd

 (2)、K8s-node01节点

  • 安装时间同步服务

[root@K8s-node01 ~]# yum -y install chrony

  • 开启时间同步服务

[root@K8s-node01 ~]# systemctl start chronyd && systemctl enable chronyd
[root@K8s-node01 ~]# systemctl status chronyd

 (3)、K8s-node02节点

  • 安装时间同步服务

[root@K8s-node02 ~]# yum -y install chrony

  • 开启时间同步服务

[root@K8s-node02 ~]# systemctl start chronyd && systemctl enable chronyd
[root@K8s-node02 ~]# systemctl status chronyd

8、加载br_netfilter模块

  • K8s-controller节点

加载br_netfilter模块

[root@K8s-controller ~]# modprobe br_netfilter

查看br_netfilter模块加载情况
[root@K8s-controller ~]# lsmod | grep br_netfilter

  • K8s-node01

加载br_netfilter模块

[root@K8s-node01 ~]# modprobe br_netfilter

查看br_netfilter模块加载情况
[root@K8s-node01 ~]# lsmod | grep br_netfilter

  • K8s-node02

加载br_netfilter模块

[root@K8s-node02 ~]# modprobe br_netfilter

查看br_netfilter模块加载情况
[root@K8s-node02 ~]# lsmod | grep br_netfilter

9、优化内核参数

        sysctl命令在Linux中用于系统运行时检查、修改内核参数,该命令允许用户读取和修改内核参数,以便优化系统性能。

(1)、K8s-controller节点
  • 新增配置文件/etc/sysctl.d/kubernetes.conf

[root@K8s-controller ~]# cat > /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
#tcp_tw_recycle与kubernetes的NAT会引起冲突导致服务不通,此处关闭。
net.ipv4.tcp_tw_recycle=0
#不检查物理内存是否够用
vm.overcommit_memory=1
#关闭不使用的ipv6协议栈,防止触发docker相关的BUG.
net.ipv6.conf.all.disable_ipv6=1  
EOF

  • 使配置文件/etc/sysctl.d/kubernetes.conf生效

[root@K8s-controller ~]# sysctl -p /etc/sysctl.d/kubernetes.conf

(2)、K8s-node01节点
  • 新增配置文件/etc/sysctl.d/kubernetes.conf

[root@K8s-node01 ~]# cat > /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
#tcp_tw_recycle与kubernetes的NAT会引起冲突导致服务不通,此处关闭。
net.ipv4.tcp_tw_recycle=0
#不检查物理内存是否够用
vm.overcommit_memory=1
#关闭不使用的ipv6协议栈,防止触发docker相关的BUG.
net.ipv6.conf.all.disable_ipv6=1  
EOF

  • 使配置文件/etc/sysctl.d/kubernetes.conf生效

[root@K8s-node01 ~]# sysctl -p /etc/sysctl.d/kubernetes.conf

(3)、K8s-node02节点
  • 新增配置文件/etc/sysctl.d/kubernetes.conf

[root@K8s-node02 ~]# cat > /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
#tcp_tw_recycle与kubernetes的NAT会引起冲突导致服务不通,此处关闭。
net.ipv4.tcp_tw_recycle=0
#不检查物理内存是否够用
vm.overcommit_memory=1
#关闭不使用的ipv6协议栈,防止触发docker相关的BUG.
net.ipv6.conf.all.disable_ipv6=1  
EOF

  • 使配置文件/etc/sysctl.d/kubernetes.conf生效

[root@K8s-node02 ~]# sysctl -p /etc/sysctl.d/kubernetes.conf


二、Docker组件部署

Docker组件需要部署在工作负载节点,故此处只在K8s-node01节点和K8s-node02节点上部署。

1、K8s-node01节点

(1)、下载Docker安装文件

此处部署的是19.03.15版本,可根据实际环境选择相应的版本。

  • 创建docker基目录

[root@K8s-node01 ~]# mkdir -p /K8s/docker

  • 下载docker安装文件

[root@K8s-node01 ~]# cd /K8s/docker
[root@K8s-node01 docker]# wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.15.tgz

(2)、解压Docker安装文件
  • 解压安装文件

[root@K8s-node01 docker]# tar --no-same-owner -zxvf /K8s/docker/docker-19.03.15.tgz

  • 创建docker相关可执行文件软链接

[root@K8s-node01 docker]# ln -s /K8s/docker/docker/* /usr/bin/
[root@K8s-node01 docker]# ll /usr/bin/docker*

(3)、创建docker.service文件

创建/usr/lib/systemd/system/docker.service文件,通过systemd来管理docker服务。

[root@K8s-node01 ~]# cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP \$MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
EOF

(4)、创建docker配置文件

        创建daemon.json配置文件,该文件只能放在/etc/docker/路径下。Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替cgoupfs。

[root@K8s-node01 ~]# cat > /etc/docker/daemon.json << EOF
{   
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com","https://0kqamue3.mirror.aliyuncs.com","https://b2dw755a.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": { 
    "max-size": "100m",
    "max-file": "5"
  }
}
EOF

(5)、启动docker服务
  • 启动服务

[root@K8s-node01 ~]# systemctl daemon-reload && systemctl enable docker && systemctl start docker

  • 查看docker服务状态

[root@K8s-node01 ~]# systemctl status docker.service

  • 查看docker服务进程信息

[root@K8s-node01 ~]# ps -ef | grep -v "grep" | grep docker --color

  • 查看docker0网桥

[root@K8s-node01 ~]# ip addr show docker0

  • 查看docker信息

[root@K8s-node01 ~]# docker info

从上图可以看到,Registry Mirrors选项的值与/etc/docker/daemon.json中配置的一致。

2、K8s-node02节点

(1)、下载Docker安装文件

此处部署的是19.03.15版本,可根据实际环境选择相应的版本。

  • 创建docker基目录

[root@K8s-node02 ~]# mkdir -p /K8s/docker

  • 下载docker安装文件

[root@K8s-node02 ~]# cd /K8s/docker
[root@K8s-node02 docker]# wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.15.tgz

(2)、解压Docker安装文件
  • 解压安装文件

[root@K8s-node02 docker]# tar --no-same-owner -zxvf /K8s/docker/docker-19.03.15.tgz

  • 创建docker相关可执行文件软链接

[root@K8s-node02 docker]# ln -s /K8s/docker/docker/* /usr/bin/
[root@K8s-node02 docker]# ll /usr/bin/docker*

(3)、创建docker.service文件

创建/usr/lib/systemd/system/docker.service文件,通过systemd来管理docker服务。

[root@K8s-node02 ~]# 

cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP \$MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
EOF

(4)、创建docker配置文件

        创建daemon.json配置文件,该文件只能放在/etc/docker/路径下。Docker在默认情况下使用的Cgroup Driver为cgroupfs,而kubernetes推荐使用systemd来代替cgoupfs。

[root@K8s-node02 ~]# cat > /etc/docker/daemon.json << EOF
{   
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://hub-mirror.c.163.com","https://0kqamue3.mirror.aliyuncs.com","https://b2dw755a.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": { 
    "max-size": "100m",
    "max-file": "5"
  }
}
EOF

(5)、启动docker服务
  •  启动服务

[root@K8s-node02 ~]# systemctl daemon-reload && systemctl enable docker && systemctl start docker

  • 查看docker服务状态

[root@K8s-node02 ~]# systemctl status docker.service

  • 查看docker服务进程信息

[root@K8s-node02 ~]# ps -ef | grep -v "grep" | grep docker --color

  • 查看docker0网桥

[root@K8s-node02 ~]# ip addr show docker0

  • 查看docker信息

[root@K8s-node02 ~]# docker info

从上图可以看到,Registry Mirrors选项的值与/etc/docker/daemon.json中配置的一致。

http://www.dtcms.com/a/427075.html

相关文章:

  • Spring Boot 缓存集成实践
  • 力扣Hot100--21.合并两个有序链表
  • 网络安全和NLP、CV是并行的应用吗?
  • 如何做好一个企业网站专门做图片的网站
  • 网页设计网站wordpress公告栏插件
  • C++ 位运算 高频面试考点 力扣 371. 两整数之和 题解 每日一题
  • 网络安全常见敏感目录字典
  • React学习(三)--- 组件化开发编写css
  • 设计模式(C++)详解——观察者模式(Observer)(1)
  • 网站建设报表明细新手做网站看什么书
  • 微课网站开发如何查看网站域名
  • Spring工程 生成表和mapper文件
  • 服装培训网站建设网站图片切换
  • Python爬虫实战:获取丁香人才网招聘信息与数据分析
  • 光学转镜最小长度计算模型:基于视场角与有效口径的匹配算法
  • 汉子由来 外国人做的网站网页设计的尺寸是指
  • 智能驱动与合规双赢:2025年企业DevOps平台选型深度解析
  • 2025年,如何选择Python Web框架:Django, Flask还是FastAPI?
  • FLASK与JAVA的多文件互传(多文件互传亲测)
  • 蓝牙音箱的技术演进:从便捷到高保真的音频革命
  • 打破信息孤岛,构建统一视界:视频融合平台EasyCVR在智慧校园建设中的核心作用
  • 计算机应用技术网站开发基础知识网店推广平台
  • 快速完美解决在CefSharp.WinForms.ChromiumWebBrowser浏览器中无法播放视频的问题
  • 【高并发服务器:前置知识】一、项目介绍 模块划分
  • 数据结构入门 (五):约束即是力量 —— 深入理解栈
  • 如何搭建网站的结构丰台专业网站建设公司
  • Web渗透之一句话木马
  • 网站建设如何选择服务器百度做公司网站多少钱
  • Vscode+CMake编译时出现中文乱码
  • 38、spark读取hudi报错:java.io.NotSerializableException: org.apache.hadoop.fs.Path