依赖关系

前置准备

硬件要求

控制节点: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
文档更新时间: 2024-04-25 16:35   作者:刘艳芳