kubernetes1.31.3集群搭建(上)(kubernetes集群数据存储在哪个位置)
nanshan 2025-04-30 18:30 15 浏览 0 评论
1 集群规划
1.1 物理机环境
电脑 | 操作系统 | CPU | 内存 | 硬盘 | 网卡 | IP地址(静态) | 虚拟机软件 | 服务器操作系统 |
联想 | Windows11 | Intel 12900K 24核 | 128GB | 4TB PcIE4.0 | 无线网卡 | 192.168.3.6 | VMware WorkStation Pro 17.6.1 | RockyLinux9.5 |
微星 | Windows11 | Intel 12900hx 24核 | 64GB | 4TB PcIE4.0 | 无线网卡 | 192.168.3.197 | VMware WorkStation Pro 17.6.1 | RockyLinux9.5 |
1.3 K8S集群节点配置
电脑 | 节点 | CPU | 内存 | 硬盘 | 网络连接模式 | IP地址 |
微星 | k8s-master-1 | 8核 | 16G | 200G | 桥接模式 | 192.168.3.60 |
k8s-master-2 | 8核 | 16G | 200G | 桥接模式 | 192.168.3.61 | |
k8s-master-3 | 8核 | 16G | 200G | 桥接模式 | 192.168.3.62 | |
联想 | k8s-node-1 | 16核 | 32G | 200G | 桥接模式 | 192.168.3.70 |
k8s-node-2 | 16核 | 32G | 200G | 桥接模式 | 192.168.3.71 | |
k8s-node-3 | 16核 | 32G | 200G | 桥接模式 | 192.168.3.72 |
1.4 K8s版本
K8s版本:
https://github.com/kubernetes/kubernetes/releases
目前主流的K8s版本有1.31、1.30、1.29、1.29、1.27五个大版本,本次我们选择1.31.3
- 测试环境可以选择最新的正式版本,例如选择1.31.3或者1.30.6
- 生产环境为了稳定,建议选择小版本大于5的K8s版本,例如选择1.30.6
软件 | 版本 |
HA Proxy | HAProxy version 2.4.22-f8e3218 |
Keepliaved | Keepalived v2.2.8 (04/04,2023) |
docker | docker-ce-3:27.3.1-1.el9.x86_64 |
containerd | containerd.io-1.7.24-3.1.el9.x86_64 |
K8s | 1.31.3 |
1.5 集群规划注意事项
- 网络配置
请确认你的IP地址、子网掩码和默认网关
- 合理使用虚拟机快照功能
K8s集群搭建大致分成15大步,如果不能确保K8s集群一次性搭建成功,那么建议每完成1大步拍摄快照,集群搭建失败时方便恢复快照
3 K8s节点基本配置及配置优化
3.1 所有节点配置yum源
https://developer.aliyun.com/mirror/rockylinux
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
-i.bak \
/etc/yum.repos.d/rocky*.repo
- 它会将所有以 mirrorlist= 开始的行注释掉(在行首添加一个 # 符号)。
- 它会将所有原本被注释掉(以 #baseurl=http://dl.rockylinux.org/$contentdir 开始)的行取消注释,并且更改 URL 为阿里云的镜像源地址 (https://mirrors.aliyun.com/rockylinux)。
- 同时它会对每个被修改的文件创建一个备份,备份文件会在原文件名后加上 .bak 后缀。
dnf makecache
3.2 所有节点必备工具安装
dnf install wget jq psmisc vim net-tools telnet yum-utils device-mapper-persistent-data lvm2 git rsyslog -y
您正在尝试在基于Red Hat的系统(如CentOS或Fedora)上使用dnf包管理器来安装一系列软件包。以下是命令的解析:
- wget: 用于从网络下载文件。
- jq: 用于处理JSON数据的命令行工具。
- psmisc: 包含一些进程管理工具,如killall。
- vim: 一个高度可配置的文本编辑器。
- net-tools: 包含网络配置工具,如ifconfig。
- telnet: 用于通过Telnet协议连接到远程主机。
- yum-utils: 提供一些辅助工具,如package-cleanup和repoquery。
- device-mapper-persistent-data : 是一个用于逻辑卷管理(LVM)和设备映射器(Device Mapper)的软件包。
- lvm2: 用于逻辑卷管理(LVM)的工具。
- git: 分布式版本控制系统。
- rsyslog: 增强的日志处理系统。
3.3 所有节点配置hosts
vim /etc/hosts
192.168.3.60 k8s-master-01
192.168.3.61 k8s-master-02
192.168.3.62 k8s-master-03
192.168.3.70 k8s-node-01
192.168.3.71 k8s-node-02
192.168.3.72 k8s-node-03
修改完成后测试指定的主机名是否能够ping通,ping通过后使用Ctrl+c停止ping
ping k8s-master-02 -c 3
ping k8s-master-03 -c 3
ping k8s-node-01 -c 3
ping k8s-node-02 -c 3
ping k8s-node-03 -c 3
3.4 所有节点禁用防火墙、SELinux、swap分区
- 所有节点禁用防火墙
systemctl disable --now firewalld
- 所有节点禁用SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
- 所有节点禁用swap分区
swapoff -a && sysctl -w vm.swappiness=0
sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab
3.5 所有节点开启rsyslog
systemctl enable --now rsyslog
tail -f /var/log/messages #实时查看系统日志 使用Ctrl+C中断
3.6 所有节点同步时间
ntpdate方案和chrony方案二选一即可,我这里选ntpdate
3.6.1 ntpdate方案
- 安装并启用Extra Packages for Enterprise Linux (EPEL)仓库
dnf install epel-release -y
dnf config-manager --set-enable epel
- 安装ntpdate
dnf install ntpsec -y
- 配置时区为亚洲上海
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' > /etc/timezone
- 连接阿里云的NTP服务器同步系统时间
ntpdate time2.aliyun.com
- 编辑当前用户的定时任务
crontab -e
- 设置每5分钟连接到阿里云的NTP服务器 time2.aliyun.com 并同步系统时间
*/5 * * * * /usr/sbin/ntpdate time2.aliyun.com
3.6.2 chrony方案(没有测试)
- 安装chrony (Rocky Linux 9 默认包含chrony)
dnf install chrony
- 配置chrony使用NTP服务器
编辑 /etc/chrony.conf 文件来添加或修改 NTP 服务器。您可以选择公共 NTP 服务器或者使用阿里云提供的 NTP 服务器。
添加阿里云的 NTP 服务器
vim /etc/chrony.conf
pool ntp1.aliyun.com iburst
pool ntp2.aliyun.com iburst
pool cn.pool.ntp.org iburst
- 设置时区为亚洲上海
timedatectl set-timezone Asia/Shanghai
- 启动并启用Chrony服务
systemctl enable chronyd
systemctl start chronyd
- 验证chrony的工作状态
chronyc tracking # 查看本地系统时间与NTP服务器之间的偏移量
- 强制立即时间同步
chronyc makestep
3.7 所有节点配置limit
ulimit -SHn 65535
vim /etc/security/limits.conf
在文件末尾添加如下内容
* soft nofile 65536
* hard nofile 131072
* soft nproc 65535
* hard nproc 655350
* soft memlock unlimited
* hard memlock unlimited
- nofile:控制单个进程可以打开的最大文件描述符数量。
- soft nofile 65536:软限制为 65536,表示普通情况下一个进程可以打开的最大文件数。
- hard nofile 131072:硬限制为 131072,表示即使有权限提升,一个进程最多也只能打开这么多文件。
- nproc:限制一个用户可以启动的最大进程数。
- soft nproc 65535:软限制为 65535,表示普通情况下该用户可以创建的最大进程数。
- hard nproc 655350:硬限制为 655350,表示即使有权限提升,该用户最多也只能创建这么多进程。
- memlock:设置最大锁定内存地址空间(以字节为单位),即允许程序锁定在物理内存中不被交换出去的数据量。
- soft memlock unlimited 和 hard memlock unlimited:意味着没有对锁定内存大小的限制,程序可以根据需要锁定任意量的内存。
3.8 所有节点所有已安装软件包到最新版本
此过程会比较耗时
dnf update -y
3.9 k8s-master-01节点免密码登录
k8s-master-01节点免密钥登录其他节点,安装过程中生成配置文件和证书均在Master01上操作,集群管理也在Master01上操作,阿里云或者AWS上需要单独一台kubectl服务器。
- 生成密钥
ssh-keygen -t rsa
执行ssh-keygen -t rsa后回车三次
- 将本地的 SSH 公钥复制到多个远程主机上
for i in k8s-master-01 k8s-master-02 k8s-master-03 k8s-node-01 k8s-node-02 k8s-node-03; do ssh-copy-id -i .ssh/id_rsa.pub $i;done
因为有6台服务器,需要输入6次yes和其他实例的密码
配置完成后从k8s-master-01使用ssh免密钥登录其他节点
ssh k8s-master-02
按Ctrl+D退出
3.10 k8s-master-01节点下载安装文件
cd /root; git clone https://gitee.com/boy_tony_cto/k8s-ha-install.git
K8s节点内核配置优化
4.1 所有节点安装ipvsadm
dnf install ipvsadm ipset sysstat conntrack libseccomp -y
- ipvsadm:用于管理和配置 IP 虚拟服务器 (IPVS),它实现了 Linux 内核中的负载均衡功能。这对于设置高可用性和负载均衡集群非常有用。
- ipset:允许创建和管理 IP 地址或端口集合,可以与 iptables 结合使用来简化复杂的防火墙规则。
- sysstat:提供了一套工具用于监控系统性能,包括 CPU、内存、磁盘 I/O 和网络等资源的使用情况。常用的工具如 sar、iostat、mpstat 都属于这个套件。
- conntrack:用于查看和操作 netfilter/iptables 连接跟踪表,这对于调试和优化 NAT 或防火墙规则非常有帮助。
- libseccomp:是一个库,提供了简单易用的接口来限制应用程序的系统调用,增强了系统的安全性。
4.2 所有节点配置ipvs模块
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
- modprobe -- ip_vs:
- 加载核心的 IPVS 模块,这是实现 IP 虚拟服务器功能的基础。
- modprobe -- ip_vs_rr:
- 加载轮询调度算法(Round Robin Scheduling Algorithm),这是一种简单的负载均衡算法,依次将请求分发给后端服务器。
- modprobe -- ip_vs_wrr:
- 加载加权轮询调度算法(Weighted Round Robin Scheduling Algorithm),它根据权重分配流量,权重越高的服务器会收到更多的请求。
- modprobe -- ip_vs_sh:
- 加载基于源地址哈希的调度算法(Source Hashing Scheduling Algorithm),该算法确保来自同一客户端的请求总是被发送到同一台服务器。
- modprobe -- nf_conntrack:
- 加载 Netfilter 连接跟踪模块,这对于状态防火墙、NAT 和其他需要跟踪连接状态的功能至关重要。
4.3 所有节点创建ipvs.conf,并配置开机自动加载
vim /etc/modules-load.d/ipvs.conf
ip_vs
ip_vs_lc
ip_vs_wlc
ip_vs_rr
ip_vs_wrr
ip_vs_lblc
ip_vs_lblcr
ip_vs_dh
ip_vs_sh
ip_vs_fo
ip_vs_nq
ip_vs_sed
ip_vs_ftp
ip_vs_sh
nf_conntrack
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
确保在系统启动时自动加载指定内核模块,并立即启动该服务的命令
systemctl enable --now systemd-modules-load.service
如下报错不用管
4.4 所有节点内核优化配置
- 编辑k8s.conf
cat <<EOF > /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
fs.may_detach_mounts = 1
net.ipv4.conf.all.route_localnet = 1
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
fs.file-max=52706963
fs.nr_open=52706963
net.netfilter.nf_conntrack_max=2310720
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl =15
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 327680
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.ip_conntrack_max = 65536
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_timestamps = 0
net.core.somaxconn = 16384
EOF
- 所有节点应用配置
sysctl --system
- 所有节点配置完内核以后,重启机器
reboot
- 查看内核模块是否已经自动加载
lsmod |grep --color=auto -e ip_vs -e nf_conntrack #列出当前已加载的内核模块,并高亮显示包含 ip_vs 或 nf_conntrack 的行
5 K8s集群高可用组件安装
注意:如果安装的不是高可用集群,haproxy和keepalived无需要安装
注意:公有云要有 公有云自带的负载均衡,比如阿里云的SLB、NLB,腾讯云的ELB,用来替代haproxy和keepalived,因为公有云大部分不支持keepalived
5.1 所有Master节点安装、配置HAProxy
Master节点包括(k8s-master-01、k8s-master-02、k8s-master-03)
dnf install haproxy -y
所有Master节点配置HAProxy,所有Master节点的HAProxy配置相同
- 备份HAProxy配置文件
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
- 清空HAProxy配置文件
> /etc/haproxy/haproxy.cfg
- 编辑HAProxy配置文件
vim /etc/haproxy/haproxy.cfg
global
maxconn 2000
ulimit-n 16384
log 127.0.0.1 local0 err
stats timeout 30s
defaults
log global
mode http
option httplog
timeout connect 5000
timeout client 50000
timeout server 50000
timeout http-request 15s
timeout http-keep-alive 15s
frontend monitor-in
bind *:33305
mode http
option httplog
monitor-uri /monitor
frontend k8s-master
bind 0.0.0.0:16443
bind 127.0.0.1:16443
mode tcp
option tcplog
tcp-request inspect-delay 5s
default_backend k8s-master
backend k8s-master
mode tcp
option tcplog
option tcp-check
balance roundrobin
default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
server k8s-master-01 192.168.3.60:6443 check
server k8s-master-02 192.168.3.61:6443 check
server k8s-master-03 192.168.3.62:6443 check
全局设置 (global)
- maxconn 2000: 设置HAProxy进程可接受的最大并发连接数为2000。
- ulimit-n 16384: 设置每个HAProxy进程可以打开的最大文件描述符数量为16384,这对于处理大量并发连接非常重要。
- log 127.0.0.1 local0 err: 指定日志记录的目标和级别,这里只记录错误级别的日志。
- stats timeout 30s: 设置统计数据收集的超时时间为30秒。
默认设置 (defaults)
这些设置适用于所有未明确指定其他行为的前端和后端部分。
- mode http: 定义默认模式为HTTP层(第7层)。
- log global: 使用全局定义的日志设置。
- option httplog: 启用HTTP请求的日志记录。
- timeout connect 5000: 设置与服务器建立连接的超时时间。
- timeout client 50000: 设置客户端连接的超时时间。
- timeout server 50000: 设置服务器端连接的超时时间。
- timeout http-request 15s: HTTP请求的超时时间。
- timeout http-keep-alive 15s: HTTP保持连接的超时时间。
前端 (frontend) 配置
监控页面 (monitor-in)
- bind *:33305: 监听所有网络接口上的33305端口。
- mode http: 操作模式为HTTP。
- option httplog: 启用HTTP请求的日志记录。
- monitor-uri /monitor: 提供一个监控检查点,通过访问/monitor来检测HAProxy是否正常运行。
Kubernetes Master (k8s-master)
- bind 0.0.0.0:16443 和 bind 127.0.0.1:16443: 监听所有网络接口以及本地回环接口上的16443端口。
- mode tcp: 操作模式为TCP层(第4层),因为Kubernetes API通信是基于TLS加密的。
- option tcplog: 启用TCP流量的日志记录。
- tcp-request inspect-delay 5s: 设置TCP请求的检查延迟为5秒,以便有足够的时间去检查TLS握手信息。
- default_backend k8s-master: 将所有接收到的请求转发给名为k8s-master的后端。
后端 (backend) 配置
Kubernetes Master (k8s-master)
- mode tcp: 操作模式为TCP层。
- option tcplog: 启用TCP流量的日志记录。
- option tcp-check: 启用对后端服务器的TCP健康检查。
- balance roundrobin: 使用轮询算法在后端服务器之间分配连接。
- default-server ...: 定义了所有服务器的默认参数,包括检查间隔、失败次数、最大连接数等。
- server ... check: 列出了后端服务器及其健康检查配置。
此配置文件已经很好地设置了一个面向Kubernetes集群的HAProxy实例,它不仅能够提供高可用性,还能够通过监控页面方便地进行状态检查。如果您有任何特定的需求或需要进一步优化,请根据实际情况调整配置。
5.2 所有Master节点安装、配置Keepalived
5.2.1 所有Master节点安装Keepalived
dnf install keepalived -y
5.2.2 所有Master节点配置Keepalived
所有Master节点的Keepalived配置不相同
- 备份Keepalived配置文件
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
- 清空Keepalived配置文件
> /etc/keepalived/keepalived.conf
- 配置k8s-master-01节点keepalived
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
script_user root
enable_script_security
}
vrrp_script chk_apiserver {
script "/etc/keepalived/check_apiserver.sh"
interval 5
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state MASTER
interface ens160
mcast_src_ip 192.168.3.60
virtual_router_id 51
priority 101
advert_int 2
authentication {
auth_type PASS
auth_pass K8SHA_KA_AUTH
}
virtual_ipaddress {
192.168.3.50
}
track_script {
chk_apiserver
}
}
- 配置k8s-master-02节点keepalived
vim /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_DEVEL
script_user root
enable_script_security
}
vrrp_script chk_apiserver {
script "/etc/keepalived/check_apiserver.sh"
interval 5
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state BACKUP
interface ens160
mcast_src_ip 192.168.3.61
virtual_router_id 51
priority 100
advert_int 2
authentication {
auth_type PASS
auth_pass K8SHA_KA_AUTH
}
virtual_ipaddress {
192.168.3.50
}
track_script {
chk_apiserver
}
}
- 配置k8s-master-03节点keepalived
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
script_user root
enable_script_security
}
vrrp_script chk_apiserver {
script "/etc/keepalived/check_apiserver.sh"
interval 5
weight -5
fall 2
rise 1
}
vrrp_instance VI_1 {
state BACKUP
interface ens160
mcast_src_ip 192.168.3.62
virtual_router_id 51
priority 100
advert_int 2
authentication {
auth_type PASS
auth_pass K8SHA_KA_AUTH
}
virtual_ipaddress {
192.168.3.50
}
track_script {
chk_apiserver
}
}
global_defs 段
- router_id LVS_DEVEL: 定义了一个唯一的路由器 ID。
- script_user root: 指定执行脚本的用户为 root。请确保这是必要的,因为以 root 权限运行脚本可能存在安全风险。
- enable_script_security: 启用脚本安全功能。
vrrp_script 段
- chk_apiserver: 定义了一个 VRRP 脚本,用于检查 API 服务器的状态。
- script "/etc/keepalived/check_apiserver.sh": 执行的脚本路径。
- interval 5: 每5秒检查一次。
- weight -5: 如果脚本失败,则将优先级减少5。
- fall 2: 当连续两次检查失败时,认为服务不可用。
- rise 1: 当一次检查成功后,认为服务可用。
vrrp_instance VI_1 段
- state MASTER: 此实例被设置为 Master 状态。 state BACKUP:初始状态被设置为BACKUP,意味着这个节点准备作为备用。
- interface ens160: 使用 ens160 接口进行 VRRP 广播。
- mcast_src_ip 192.168.3.62: 设置多播源 IP 地址为 192.168.3.62。
- virtual_router_id 51: 定义虚拟路由器 ID。
- priority 101: 设置优先级。
- advert_int 2: 设置通告间隔为2秒。
- authentication: 定义认证信息。
- auth_type PASS: 使用密码认证。
- auth_pass K8SHA_KA_AUTH: 认证密码,请确保这是一个强密码。
- virtual_ipaddress: 定义虚拟 IP 地址为 192.168.3.50。
- track_script: 引用之前定义的 chk_apiserver 脚本。
5.2.3 所有Master节点配置keepalived健康检查文件
- 编辑keepalived健康检查文件
vim /etc/keepalived/check_apiserver.sh
#!/bin/bash
# 初始化错误计数器
err=0
# 尝试检查haproxy进程最多三次
for k in $(seq 1 3 )
do
check_code=$(pgrep haproxy)
if [[ "$check_code" == "" ]]; then
err=$(expr $err+1)
sleep 1
continue
else
err=0
break
fi
done
# 如果三次尝试后仍未找到haproxy进程,则停止keepalived服务
if [[ $err != "0" ]]; then
echo "systemctl stop keepalived"
/usr/bin/systemctl stop keepalived
exit 1
else
exit 0
fi
- check_apiserver.sh脚本添加执行权限
chmod u+x /etc/keepalived/check_apiserver.sh
5.3 所有master节点启动haproxy和keepalived
- 重新加载 systemd 的单元配置文件
systemctl daemon-reload
- 启用并立即启动 HAProxy 服务
systemctl enable --now haproxy
- 启用并立即启动 Keepalived 服务
systemctl enable --now keepalived
5.4 所有节点测试vip
ping 192.168.3.50 -c 4
telnet 192.168.3.50 16443
如果 ping不通且 telnet 没有出现 ] ,则认为 VIP 不可以,不可在继续往下执行,
需要排查keepalived 的问题,比如防火墙和 selinux,haproxy 和 keepalived 的状态,监听端口等
所有节点查看防火墙状态必须为disable和inactive:systemctl status firewalld
所有节点查看selinux状态,必须为disable:getenforce
master节点查看haproxy和keepalived状态:systemctl status keepalived haproxy
master节点查看监听端口:netstat-lntp
如果以上都没有问题,需要确认:
- 是否是公有云机器
- 是否是私有云机器(类似0penStack)
上述公有云一般都是不支持keepalived,私有云可能也有限制,需要和自己的私有云管理员咨询
6 K8s Runtime安装
如果安装的版本低于1.24,选择Docker和Containerd均可,高于1.24选择Containerd作为Runtime。
6.1 所有节点配置安装源
dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
6.2 所有节点安装docker-ce、containerd
dnf install docker-ce containerd -y
可以无需启动Docker,只需要配置和启动Containerd即可。
6.3 所有节点配置Containerd
- 配置Containerd所需的模块
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
- 加载模块
modprobe -- overlay
modprobe -- br_netfilter
- 配置Containerd所需的内核
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
- 加载内核
sysctl --system
- 配置Containerd的配置文件
mkdir -p /etc/containerd
containerd config default | tee /etc/containerd/config.toml
- 将Containerd的Cgroup改为Systemd
sed -i 's#SystemdCgroup = false#SystemdCgroup= true #g' /etc/containerd/config.toml
sed -i 's#k8s.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g' /etc/containerd/config.toml
sed -i 's#registry.gcr.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g' /etc/containerd/config.toml
sed -i 's#registry.k8s.io/pause#registry.cn-hangzhou.aliyuncs.com/google_containers/pause#g' /etc/containerd/config.toml
vim /etc/containerd/config.toml
你提供的 sed 命令用于修改
/etc/containerd/config.toml 文件中的特定配置项。这些命令将:
- 将 SystemdCgroup = false 修改为 SystemdCgroup = true。
- 将所有出现的 k8s.gcr.io/pause 替换为 registry.cn-hangzhou.aliyuncs.com/google_containers/pause。
- 将所有出现的 registry.gcr.io/pause 替换为 registry.cn-hangzhou.aliyuncs.com/google_containers/pause。
- 将所有出现的 registry.k8s.io/pause 替换为 registry.cn-hangzhou.aliyuncs.com/google_containers/pause。
- 启动Containerd,并配置开机启动
systemctl daemon-reload
systemctl enable --now containerd
- 检查containerd状态是否正常
ctr plugin ls
确认ID为overlayfs和cri的状态必须OK
- 配置crictl客户端连接的运行时位置(可选)
cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
安装完成k8s后,会同步安装crictl
没有安装k8s前使用crictl会提示command not found
7 K8s集群组件安装
7.1 所有节点配置源(注意版本号)
https://developer.aliyun.com/mirror/kubernetes
- 阿里云k8s镜像仓库配置
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/rpm/repodata/repomd.xml.key
EOF
- 在k8s-master-01节点查看最新的Kubernates版本是多少
dnf list kubeadm.x86_64 --showduplicates | sort -r
7.2 所有节点安装1.31最新版本kubeadm、kubelet和kubectl
注意:公有云环境下,可能需要将kubectl放在一个非master节点上
dnf install kubeadm-1.31* kubelet-1.31* kubectl-1.31* -y
7.3所有节点设置Kubelet开机自启动
- 所有节点设置Kubelet开机自启动
systemctl enable --now kubelet
- 查看系统日志,Ctrl+c中断查看
tail -f /var/log/messages
由于还未初始化,没有kubelet的配置文件,此时kubelet无法启动,无需管理
相关推荐
- 轻量级分析利器再升级:解读 DuckDB 1.3.0 新特性
-
DuckDB团队近日正式发布了最新版本——DuckDB1.3.0,代号“Ossivalis”。此次版本以金眼鸭的远古祖先BucephalaOssivalis命名,象征项目在演化和成长过...
- C++跨平台编译的终极奥义:用Docker把环境差异按在地上摩擦
-
"代码在本地跑得飞起,一上服务器就coredump?"——每个C++程序员都经历过的《编译器的复仇》事件!大家好,我是Henry,废话少说,今天来简单谈一下跨平台编译的那些事儿,...
- 全网最全-Version Script以及__asm__((".symver xxx"))使用总结
-
首先提醒一点,一切的前提建立在你的名字必须要mangling,不然无论你写的versionscript还是__asm__都不会起任何效果VersionScript简单用法:这是一个典型例子,这个例...
- Ubuntu 25.04 Beta发布:Linux 6.14内核
-
IT之家3月28日消息,Canonical昨日(3月27日)放出了Beta版Ubuntu25.04系统镜像,代号“PluckyPuffin”,稳定版预估将于2025年...
- 不同平台CRT的区别?什么是UCRT?如何看libc源代码?
-
若文章对您有帮助,欢迎关注程序员小迷。助您在编程路上越走越好!CRT运行时库C标准规定例如输入输出函数、字符串函数、内存操作等接口,一般采用C运行时库实现。微软的CRT微软有两套CRT,早期的MS...
- 信创力量,中兴绽放——中兴新支点桌面操作系统安装与使用全攻略
-
原文链接:「链接」Hello,大家好啊,今天给大家带来一篇中兴新支点桌面操作系统安装使用的文章,欢迎大家分享点赞,点个在看和关注吧!中兴新支点桌面操作系统是一款基于Linux内核、面向政企和信创环...
- Linux下安装常用软件都有哪些?做了一个汇总列表,你看还缺啥?
-
1.安装列表MySQL5.7.11Java1.8ApacheMaven3.6+tomcat8.5gitRedisNginxpythondocker2.安装mysql1.拷贝mysql安装文件到...
- 一篇文章解决Linux系统安全问题排查,另配实操环境
-
实操地址:https://www.skillup.host/1/linux/safe/command.md#Linux安全检查排查指南##1.系统账户安全检查###1.1检查异常账户``...
- 程序员必备的学习笔记《TCP/IP详解(一)》
-
为什么会有TCP/IP协议在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样...
- 《Linux常用命令》(linux的常用命令总结)
-
一、文件与目录操作1.目录导航pwd:显示当前工作目录路径示例:pwd关键词:当前路径、工作目录cd:切换目录示例:cd/home/user#切换到绝对路径cd..#...
- Kubernetes 教程之跟着官方文档从零搭建 K8S
-
前言本文将带领读者一起,参照者Kubernetes官方文档,对其安装部署进行讲解.Kubernetes更新迭代很快,书上、网上等教程可能并不能适用于新版本,但官方文档能.阅读这篇文章你...
- 电脑网卡坏了怎么修复(电脑网卡坏了怎么修复win7系统)
-
当电脑网卡出现故障时,无论是有线网络还是无线网络,都可能无法正常连接。下面从软件、硬件等方面,分步骤为你介绍排查与修复的解决方案。一、初步排查:锁定问题源头检查网络环境将手机、平板等其他设备连接至同一...
- 如何查询电脑/手机的物理地址(如何找手机的物理地址)
-
一、要查询电脑的物理地址(也称为MAC地址),可以按照以下步骤进行操作:1.打开命令提示符(Windows)或终端(Mac):-在Windows上,点击“开始”按钮,搜索“命令提示符”,然后点击打...
- IPv4 无网络访问权限全流程解决方案
-
当设备出现IPv4无网络访问权限问题时,多由网络配置错误、连接故障或服务异常导致。以下提供系统化的排查步骤与解决方案,帮助用户快速定位并修复问题。一、基础故障快速检查1.物理连接确认有线网络:检...
- Python教程(十九):文件操作(python操作文件夹)
-
昨天,我们学习了列表推导式,掌握了Python中最优雅的数据处理方式。今天,我们将学习文件操作—Python中读写文件的基础技能。文件操作是编程中的核心技能,无论是读取配置文件、保存用户数据,还是...
你 发表评论:
欢迎- 一周热门
-
-
UOS服务器操作系统防火墙设置(uos20关闭防火墙)
-
极空间如何无损移机,新Z4 Pro又有哪些升级?极空间Z4 Pro深度体验
-
手机如何设置与显示准确时间的详细指南
-
NAS:DS video/DS file/DS photo等群晖移动端APP远程访问的教程
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
如何修复用户配置文件服务在 WINDOWS 上登录失败的问题
-
一加手机与电脑互传文件的便捷方法FileDash
-
日本海上自卫队的军衔制度(日本海上自卫队的军衔制度是什么)
-
10个免费文件中转服务站,分享文件简单方便,你知道几个?
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
- 最近发表
-
- 轻量级分析利器再升级:解读 DuckDB 1.3.0 新特性
- C++跨平台编译的终极奥义:用Docker把环境差异按在地上摩擦
- 全网最全-Version Script以及__asm__((".symver xxx"))使用总结
- Ubuntu 25.04 Beta发布:Linux 6.14内核
- 不同平台CRT的区别?什么是UCRT?如何看libc源代码?
- 信创力量,中兴绽放——中兴新支点桌面操作系统安装与使用全攻略
- Linux下安装常用软件都有哪些?做了一个汇总列表,你看还缺啥?
- 一篇文章解决Linux系统安全问题排查,另配实操环境
- 程序员必备的学习笔记《TCP/IP详解(一)》
- 《Linux常用命令》(linux的常用命令总结)
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)