基于银河麒麟V10快速部署k3s
前言
在xc环境下快速部署k8s功能进行验证。
环境准备
这里采用2台4C、8G配置的联通云ARM虚拟机进行,环境为初始化系统,未安装任何服务。
[root@root-01-0007 ~]# cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Sword)"
ID="centos"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Sword)"
ANSI_COLOR="0;31"
安装docker
自行部署,省略…
初始化环境准备
所有机器执行
安装依赖包
yum install -y conntrack ntpdate ntp ipvsadm ipset iptables curl sysstat libseccomp vim net-tools rpcbind nfs-utils
遇到错误再添加
# 安装 container-selinux
yum install -y container-selinux
# 安装 selinux-policy-base
yum install -y selinux-policy-base
集群ip映射
[root@root-01-0007 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.113.231 root-01-0007
172.16.113.79 root-01-0008
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭selinux
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config && getenforce
禁用linux的透明大页、标准大页
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local
chmod +x /etc/rc.d/rc.local
禁用swap分区(我这边没设置也行)
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
文件数设置
ulimit -SHn 65535
cat >> /etc/security/limits.conf <<EOF
* soft nofile 655360
* hard nofile 131072
* soft nproc 655350
* hard nproc 655350
* seft memlock unlimited
* hard memlock unlimitedd
EOF
linux内核参数调优
配置内核路由转发及网桥过滤
#将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
#开启网桥模式【重要】
net.bridge.bridge-nf-call-iptables=1
#开启网桥模式【重要】
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
# 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.swappiness=0
# 不检查物理内存是否够用
vm.overcommit_memory=1
# 开启 OOM
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
#关闭ipv6【重要】
# net.ipv6.conf.all.disable_ipv6=1
# net.netfilter.nf_conntrack_max=2310720
# 下面的内核参数可以解决ipvs模式下长连接空闲超时的问题
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 10
net.ipv4.tcp_keepalive_time = 600
EOF
sysctl --system
加载网桥过滤模块
modprobe br_netfilter
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
modprobe -- br_netfilter
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
# 查看网桥过滤模块是否成功加载
lsmod | grep br_netfilter
# 重新刷新配置
sysctl -p /etc/sysctl.d/k8s.conf
# 保证在节点重启后能自动加载所需模块
cat >> /etc/rc.d/rc.local << EOF
bash /etc/sysconfig/modules/ipvs.modules
EOF
chmod +x /etc/rc.d/rc.local
时间同步
yum install ntpdate -y
#ntpdate time.windows.com
ntpdate ntp1.aliyun.com
# 或者配置crontab执行:
# `crontab -e`
# 0 */1 * * * /usr/sbin/ntpdate ntp1.aliyun.com
echo "0 */1 * * * /usr/sbin/ntpdate ntp1.aliyun.com" >> /var/spool/cron/root
K3s部署
K3s资源是有国内的服务器上,可以使用国内资源安装K3s,提升了安装速度的同时也提升了安装的稳定性。
K3s默认使用containerd
作为容器runtime,这里进行修改,选择Docker作为容器runtime。
K3s server 节点安装
执行安装脚本,使用Docker作为runtime,并设置默认registry地址为registry.cn-hangzhou.aliyuncs.com
# 使用Docker作为runtime,使用该命令
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_SELINUX_WARN=true \
INSTALL_K3S_SKIP_SELINUX_RPM=true \
INSTALL_K3S_VERSION=v1.28.15+k3s1 \
INSTALL_K3S_MIRROR=cn sh -s - \
--docker --data-dir=/data/k3s \
--system-default-registry=registry.cn-hangzhou.aliyuncs.com
# 默认使用containerd作为runtime,使用该命令
#curl –sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_SELINUX_WARN=true INSTALL_K3S_MIRROR=cn sh -s - --system-default-registry "registry.cn-hangzhou.aliyuncs.com"
环境变量参数
INSTALL_K3S_SELINUX_WARN=true
- 作用:在 SELinux 启用的系统上,仅显示警告信息而不强制要求安装 SELinux 策略包。
INSTALL_K3S_SKIP_SELINUX_RPM=true
- 作用:跳过安装
k3s-selinux
RPM 包,避免因依赖问题导致安装失败。
- 作用:跳过安装
INSTALL_K3S_VERSION=v1.28.15+k3s1
- 作用:指定安装的 K3s 版本为 v1.28.15(Kubernetes v1.28.15 的 K3s 定制版本),最新版本参考:
https://update.k3s.io/v1-release/channels
- 作用:指定安装的 K3s 版本为 v1.28.15(Kubernetes v1.28.15 的 K3s 定制版本),最新版本参考:
INSTALL_K3S_MIRROR=cn
- 作用:使用中国镜像源加速下载 K3s 二进制文件和组件。国内仓库地址:
https://mirror.rancher.cn/
- 作用:使用中国镜像源加速下载 K3s 二进制文件和组件。国内仓库地址:
命令行参数
--docker
- 作用:使用 Docker 作为容器运行时,而非默认的 containerd。
- 注意:K3s 默认推荐使用 containerd,指定
--docker
需确保系统已安装 Docker。
--data-dir=/data/k3s
- 作用:指定 K3s 数据存储目录为
/data/k3s
(默认是/var/lib/rancher/k3s
)。
- 作用:指定 K3s 数据存储目录为
--system-default-registry=registry.cn-hangzhou.aliyuncs.com
- 作用:设置全局默认镜像仓库为阿里云杭州镜像服务。
可以等待几分钟后,再查看K3s工作状态:
[root@root-01-0007 data]# kubectl get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME STATUS MESSAGE ERROR
etcd-0 Healthy ok
controller-manager Healthy ok
scheduler Healthy ok
[root@root-01-0007 server]# kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-7c78bfc46f-pkw54 1/1 Running 0 7m31s
kube-system helm-install-traefik-crd-f5v2m 0/1 Completed 0 7m31s
kube-system helm-install-traefik-fjl9g 0/1 Completed 2 7m31s
kube-system local-path-provisioner-7cd69477bc-lhsc6 1/1 Running 0 7m31s
kube-system metrics-server-7488cdc759-hm28p 1/1 Running 0 7m31s
kube-system svclb-traefik-76ccca6b-lzmn5 2/2 Running 0 3m51s
kube-system traefik-5d4bf95c4f-9ttcq 1/1 Running 0 3m51s
K3s agent 节点安装
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
INSTALL_K3S_SELINUX_WARN=true \
INSTALL_K3S_SKIP_SELINUX_RPM=true \
INSTALL_K3S_VERSION=v1.28.15+k3s1 \
INSTALL_K3S_MIRROR=cn \
K3S_URL=https://root-01-0007:6443 \
K3S_TOKEN=K108c5b70463867949141a46597069529ed27d6408c2a4785dabd926740bd3f4728::server:8cfb2de2a76fa1e192655b79ffb733a3 \
sh -s - \
--docker --data-dir=/data/k3s
# K3s agent 节点不需要配置 `system-default-registry`。
K3S_TOKEN如果没指定需要到
/var/lib/rancher/k3s/server/node-token
获取,如果指定了data-dir
则到指定目录下获取
参考
1.https://docs.k3s.io/zh/quick-start
2.https://forums.rancher.cn/t/k3s/3314/5
迁移后测试~