依赖关系
前置准备
硬件要求
控制节点:4核 8G 100G+
工作节点:8核 32G 200G+
系统安装:CentOS7.9 64位,分区为 /boot
为400Mb,其他归到 /
永久关闭swap
sed -i 's/^[^#].*swap.*/#&/' /etc/fstab
swapoff -a
永久关闭selinux
sed -i "s/^SELINUX=.*$/SELINUX=disabled/" /etc/selinux/config
setenforce 0
资源限制配置
cat >> /etc/security/limits.conf << EOF
* soft noproc 65536
* hard noproc 65536
* soft nofile 65536
* hard nofile 65536
EOF
调整分区
按需执行,由100G模板克隆出来并加大硬盘的节点则需要调整
fdisk /dev/vda
n
p
默认(回车)
默认(回车)
默认(回车)
t
默认(回车)
8e
p
w
# 更新Linux内核中的硬盘分区表数据
partprobe /dev/vda
# 创建物理卷
pvcreate /dev/vda3
# 默认为centos,可通过vgdisplay查看确认
vgextend centos /dev/vda3
# 扩展逻辑卷的大小, 默认为 /dev/mapper/centos-root,可能通过df -h命令查看确认
lvextend -l +100%FREE /dev/mapper/centos-root
xfs_growfs /dev/mapper/centos-root
# 查看是否成功
df -hT
另一个方式:指定存储位置
mkdir -p /etc/containerd
mkdir -p /data/containerd
echo 'root = "/data/containerd"' > /etc/containerd/config.toml
生成默认配置 containerd config default > /etc/containerd/config.toml
机器名称
根据机器分配情况,对所有节点机器名进行命名设置, k8s-master13 ,k8s-worker15 示例如下:
hostnamectl set-hostname k8s-master1
同步时间
目前安装的是英文系统,默认时区改为 上海时区(GMT +8)
# 查看当前时区
timedatectl status
# 修改时区
timedatectl set-timezone Asia/Shanghai
# 安装同步工具并进行同步
yum -y install ntp
ntpdate ntp1.aliyun.com
升级系统内核
【所有K8s节点都执行】
CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定,如下所示:
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install -y kernel-lt
grep initrd16 /boot/grub2/grub.cfg
grub2-set-default 0
reboot
更改防火墙配置
注意:这个有时会导致k8s服务运行异常, 故考虑先做关闭处理。
# 检查防火墙配置
grep 'AllowZoneDrifting=yes' /etc/firewalld/firewalld.conf
# 上面命令结果为 AllowZoneDrifting=yes,执行修改
sed -i 's/AllowZoneDrifting=yes/AllowZoneDrifting=no/' /etc/firewalld/firewalld.conf
放行防火墙
物理机器 的IP: 10.62.17.110~10.62.17.112
K8s podSubnet 和 serviceSubnet来源,需要Kubernetes安装后查看
# kubectl get cm kubeadm-config -n kube-system -oyaml|grep Subnet
podSubnet: 100.64.0.0/10
serviceSubnet: 10.96.0.0/12
汇总如下
# 物理服务器
firewall-cmd --add-source=10.62.17.110 --zone=trusted --permanent
firewall-cmd --add-source=10.62.17.111 --zone=trusted --permanent
firewall-cmd --add-source=10.62.17.112 --zone=trusted --permanent
......
# podSubnet 和 serviceSubnet
firewall-cmd --add-source=100.64.0.0/10 --zone=trusted --permanent
firewall-cmd --add-source=10.96.0.0/12 --zone=trusted --permanent
firewall-cmd --reload
#查看设置
firewall-cmd --list-all --zone=trusted
安装平台
一键安装K8s
下载安装包
mkdir -p /app
cd /app
curl -o sealos https://api.flyrise.cn/pai/k8s/sealos
curl -o kube1.21.1.tar.gz https://api.flyrise.cn/pai/k8s/kube1.21.1.tar.gz
chmod +x sealos && cp sealos /usr/bin
执行安装
本次安装采用单master多node集群方式部署,需要root权限来配合sealos工具安装,需要先把所有机器节点的密码改为一致。
通过sealos工具进行kubernets集群安装,将配置systemd,关闭swap防火墙等,然后导入集群所需要的镜像。Kubernetes 在 Changelog 中宣布自 Kubernetes 1.20 之后将弃用 Docker 作为容器运行时之后,containerd成为下一个容器运行时的热门选项。
cd /app
sealos init \
--user root \
--passwd 'Aa@123456' \
--master 192.168.66.21:22 \
--master 192.168.66.22:22 \
--master 192.168.66.23:22 \
--node 192.168.66.24:22 \
--node 192.168.66.25:22 \
--node 192.168.66.26:22 \
--node 192.168.66.27:22 \
--node 192.168.66.28:22 \
--pkg-url /app/kube1.21.1.tar.gz \
--version v1.21.1
# 安装成功结果
07:45:46 [INFO] [print.go:39] sealos install success.
07:45:46 [INFO] [init.go:96]
___ ___ ___ ___ ___ ___
/\ \ /\ \ /\ \ /\__\ /\ \ /\ \
/::\ \ /::\ \ /::\ \ /:/ / /::\ \ /::\ \
/:/\ \ \ /:/\:\ \ /:/\:\ \ /:/ / /:/\:\ \ /:/\ \ \
_\:\~\ \ \ /::\~\:\ \ /::\~\:\ \ /:/ / /:/ \:\ \ _\:\~\ \ \
/\ \:\ \ \__\ /:/\:\ \:\__\ /:/\:\ \:\__\ /:/__/ /:/__/ \:\__\ /\ \:\ \ \__\
\:\ \:\ \/__/ \:\~\:\ \/__/ \/__\:\/:/ / \:\ \ \:\ \ /:/ / \:\ \:\ \/__/
\:\ \:\__\ \:\ \:\__\ \::/ / \:\ \ \:\ /:/ / \:\ \:\__\
\:\/:/ / \:\ \/__/ /:/ / \:\ \ \:\/:/ / \:\/:/ /
\::/ / \:\__\ /:/ / \:\__\ \::/ / \::/ /
\/__/ \/__/ \/__/ \/__/ \/__/ \/__/
官方文档:sealyun.com
项目地址:github.com/fanux/sealos
QQ群 :98488045
常见问题:sealyun.com/faq
一键安装K3s
mkdir /app
# 上传安装包cei_install.tar.gz 到 /app
cd /app
tar zxvf cei_install.tar.gz
mv cei_install honghu
cd honghu
# ================离线安装================
# 离线UUID由提供安装包时获得
mkdir -p /app/honghu/.cei && echo -n '离线UUID' > /app/honghu/.cei/c.id
vi /app/honghu/yaml/pai/pai-data-sync-edge-agent.yaml
# 添加环境变量配置
PAI_CEI_ID=/app/honghu/.cei/c.id
# ================离线安装================
# 执行安装
sh cei_install.sh
2024-04-20T21:15:20 [INFO ] 开始时间: 1713618241
2024-04-20T21:15:20 [INFO ] 结束时间: 1713618920
2024-04-20T21:15:20 [INFO ] 耗费时间: 11 分钟
2024-04-20T21:15:20 [INFO ] 执行同步脚本
2024-04-20T21:44:45 [INFO] 开始时间: Sat Apr 20 21:41:23 CST 2024
2024-04-20T21:44:45 [INFO] 结束时间: Sat Apr 20 21:44:45 CST 2024
2024-04-20T21:44:45 [INFO] 耗费时间: 3 分钟
# 查看IP地址
ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 36:59:1b:91:d8:db brd ff:ff:ff:ff:ff:ff
inet 10.62.17.110/24 brd 10.62.17.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::3459:1bff:fe91:d8db/64 scope link
valid_lft forever preferred_lft forever
Kubectl命令自动补全
# Master节点按需执行
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
运维面板
访问地址:http://10.62.17.110:30080/
默认账号密码: admin / Kubord123 (建议立即修改默认密码)
进入集群
反向代理(非必选)
通过kuboard 进行导入 nginx-proxy.yml
访问地址: http://10.62.17.110:81
平台初始化
1、更新套件数据(一键安装跳过):
1.1、登录运营中心 http://10.62.17.110:81/operate,初始账号密码 sys / Sys@1234 (首次修改密码)
1.2、云边一体 > 边端管理 > 更新套件数据 (离线时上传a905c8796785473bbb7f537d192099d1.zip)
1.3、重启未启动成功的业务服务(或全部重启)
2、导入图标(离线):
2.1、将cei_icon_meta.zip上传到 /data 目录下 (kuboard上传)
2.2、请求 http://10.62.17.110:81/data-sync-edge-agent-api/icon?icon_schema=pai_config&k=yyyyMMddHHmm (k参数为年月日时分)上传到OSS
2.3、登录运营中心 http://10.62.17.110:81/operate
2.4、开发管理 > 开发配置 > 图标管理 能正常看到图标即表示正常
3、导入菜单:
3.1、登录运营中心 http://10.62.17.110:81/operate
3.2、开发管理 > 实施配置 > 企业初始化 > 菜单模块 > 导入模板文件 (鸿鹄P+菜单模块.json)
3.3、新建管理员角色并授权所有功能
激活认证
1、访问激活页面: http://10.62.17.110:81/console/site/active
1.1、密钥:63cec2de3153a3c6e6a9f10b6ae5d1f4
1.2、证书内容:复制63cec2de3153a3c6e6a9f10b6ae5d1f4文件的内容 (选离线激活方式,填写)
2、查看激活状态: http://10.62.17.110:81/operate-api/cei/customer/status 看到返回数据中 activated=true 即可
特殊参数(pai-data-sync-edge-agent)
参数 | 值 | 说明 |
---|---|---|
PAI_CEI_SKIP_WORKFLOW | 1 | 跳过流程同步 |
PAI_CEI_ID | /app/honghu/.cei/c.id | 离线UUID路径 |
PAI_CEI_ICON_META | /data/cei_icon_meta.zip | 离线图标包路径(kuboard上传) |
资料备份
- 数据库
- 附件
- 备份镜像
- 备份ETCD
- 备份Yaml(工作负载/服务等)
参考资料
问题
- 配置路由+hosts映射后无法访问
答:访问时需要域名+Ingress的NodePort