江湖传言 sealos是最丝滑的k8s集群部署工具,没错像德芙一般丝滑。而版本不要太全,生产环境中稳如老狗!
我们怎么能不知道它呢?今晚由我来给大家分析一个关于sealos 丝滑部署k8s集群的知识点。我的小伙伴儿们,开始吧!
1.什么是 Sealos ?Sealos 是一个 Go 语言开发的简单干净且轻量的 Kubernetes 集群部署工具,Sealos 能很好的支持在生产环境中部署高可用的 Kubernetes 集群。
2.Sealos 优势:100年证书 版本超全
不依赖ansible haproxy keepalived, 一个二进制工具,零依赖
离线安装,不同kubernetes版本下载对应不同版本的资源包,离线包包含所有二进制文件配置文件和镜像
高可用默认通过ipvs实现的localLB,占用资源少,稳定可靠。
几乎可兼容所有支持systemd的x86_64架构的环境
轻松实现集群节点的增加/删除
上千用户群线上环境使用sealos,资源包放在阿里云oss上,无需担心网速问题
dashboard ingress prometheus等APP同样离线打包,一键安装
官网地址: https://sealyun.com/ 企业级应用的集群离线包需要付费,我们只是学习,使用作者提供的免费离线包: http://store.lameleg.com/ 官网中文安装手册: https://github.com/fanux/sealos 可以下载sealos不同版本的二进制文件 https://github.com/fanux/sealos/releases3.Sealos 常用参数说明
--master Master 节点服务器地址列表 --node Node 节点服务器地址列表 --user 服务器 SSH 用户名 --passwd 服务器 SSH 用户密码 --pkg-url 离线包所在位置,可以是本地目录,也可以是一个 HTTP 地址 --version 指定需要部署的 Kubernetes 版本 --pk 指定 SSH 私钥所在位置,默认为 /root/.ssh/id_rsa Other flags: --kubeadm-config string kubeadm-config.yaml 用于指定自定义 kubeadm 配置文件 --vip string virtual ip (default "10.103.97.2") 本地负载时虚拟 IP ,不推荐修改,集群外不可访问4.安装注意事项:
高版本离线包自带docker,如没安装docker会自动安装。所以说需要纯净的系统 下载kubernetes 离线安装包. 尽量使用新版本sealos 用新不用旧 务必同步服务器时间 主机名不可重复 master节点CPU必须2C以上 cni组件选择cilium时要求内核版本不低于5.4 podSubnet: 100.64.0.0/10 serviceSubnet: 10.96.0.0/125.下载离线资源包
此处提供两个生产环境中常用版本1.22与1.20版本下载路径
下载离线资源包wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/05a3db657821277f5f3b92d834bbaf98-v1.22.0/kube1.22.0.tar.gz 或 wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/2fb10b1396f8c6674355fcc14a8cda7c-v1.20.0/kube1.20.0.tar.gz 例如安装一个三master的kubernetes集群: # 如已设ssh免密登录可以不需要--passwd参数 # --podcidr 配置pod网段 # --svccidr 配置clusterip网段 # --network 机器网卡名,CNI网卡发现用 如下例所示: sealos init --master 192.168.32.200 --master 192.168.32.202 --node 192.168.32.221 --pkg-url /root/kube1.22.7.tar.gz --version v1.22.7 --podcidr 10.244.0.0/16 --svccidr 10.93.0.0/12 pod的ip地址段,也称为cidr # podcidr 参数指定自定义pod网段 如 --podcidr 10.244.0.0/16 # svccidr 参数指定clusterip网段 如 --svccidr 10.93.0.0/12 # 不安装cni插件 ## without-cni sealos自带calico网络,如果你想自己装CNI不用默认可加此参数, 如 sealos init --without-cni … # 自定义cni插件 -- network flannel
sealos部署k8s集群:
服务器部署ip布局
1 设置防火墙为 Iptables 并设置空规则
【所有节点都执行】
systemctl stop firewalld systemctl disable firewalld yum -y install iptables-services ipvsadm ; systemctl start iptables ; systemctl enable iptables ; iptables -F ; service iptables save
关闭selinux
【所有节点都执行】
# setenforce 0
# vim /etc/selinux/config
修改SELINUX=enforcing 为 SELINUX=disabled
2 配置主机名
【所有节点都执行】
hostnamectl set-hostname 主机名 cat > /etc/hosts <<-'EOF' 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.5.151 k8s-master1 192.168.5.152 k8s-master2 192.168.5.153 k8s-master3 192.168.5.154 k8s-node1 192.168.5.155 k8s-node2 EOF6 配置时间同步
【所有节点都执行】
选择一个节点作为服务端,剩下的作为客户端
master1为时间服务器的服务端
其他的为时间服务器的客户端
1)配置k8s-master1
# yum install chrony -y # vi /etc/chrony.conf 修改三项 server 127.127.1.0 iburst allow 192.168.5.0/24 local stratum 10 # systemctl start chronyd # systemctl enable chronyd # ss -unl | grep 123 UNCONN 0 0 *:123 *:*
配置其他节点
# yum install chrony -y # vi /etc/chrony.conf server 192.168.5.151 iburst # systemctl start chronyd # systemctl enable chronyd # chronyc sources 210 Number of sources = 1 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* k8s-master1 10 6 17 4 +11us[ +79us] +/- 95us7.关闭swap交换分区,所有节点都执行
chronyc sources chronyc -a makestep swapoff -a sed -ri 's/.*swap.*/#&/' /etc/fstab8、调整内核参数
【所有节点都执行】
cat > kubernetes.conf <出现报错不用担心,因为没开通网桥我们后面会开通
9、设置 rsyslogd 和 systemd journald
关闭系统不需要服务,并升级systemd
yum -y upgrade systemd #通过 centos 更新 systemd因为我的比较旧
systemctl stop postfix && systemctl disable postfix【所有节点都执行】
mkdir /var/log/journal # 持久化保存日志的目录 mkdir /etc/systemd/journald.conf.d cat > /etc/systemd/journald.conf.d/99-prophet.conf <10、升级系统内核 【所有节点都执行】
CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定,
例如: rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
我已经下载到百度网盘:
链接:https://pan.baidu.com/s/1kQ48A-St03MzY2BWakad0Q
提取码:pwcq
如下所示: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 reboot11、kube-proxy开启ipvs的前置条件【所有节点都执行】
modprobe br_netfilter cat > /etc/sysconfig/modules/ipvs.modules <12.Kubernetes安装 前提条件
下载kubernetes 离线安装包.
下载sealos
第一步,下载sealos最新版和kubernetes离线安装包
本次下载sealos版本为v3.3.9-rc.10,kubernetes版本为1.22.0
我的百度网盘:
链接:https://pan.baidu.com/s/16T3Xo1jw8okOdK9bBMsXew
提取码:thu7wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/05a3db657821277f5f3b92d834bbaf98-v1.22.0/kube1.22.0.tar.gz第二步,安装sealos工具
chmod +x sealos && mv sealos /usr/bin第三步,安装高可用kubernetes
多master HA:
没有配置秘钥级信任,执行如下命令。sealos init --passwd '123.com' --master 192.168.5.151 --master 192.168.5.152 --master 192.168.5.153 --node 192.168.5.154 --pkg-url /root/kube1.22.0.tar.gz --version v1.22.0常用选项如下例如下:
sealos init --master 192.168.0.2 --master 192.168.0.3 --master 192.168.0.4 # master地址列表 --node 192.168.0.5 # node地址列表 --user root # 服务用户名 --passwd your-server-password # 服务器密码,用于远程执行命令 --pkg kube1.14.1.tar.gz # 离线安装包名称 --version v1.14.1 # kubernetes 离线安装包版本,这渲染kubeadm配置时需要使用注意:预先配置好ssh秘钥信任关系 可以通过如下命令完成。
sealos init --master 192.168.5.150 --master 192.168.5.151 --master 192.168.5.152 --node 192.168.5.153 --node 192.168.5.154 --version v1.22.0 --pkg-url /root/kube1.22.0.tar.gz如果密钥对有密码,则需要添加–pk-passwd password
sealos init --pk-passwd '123456' --master 10.0.19.127 --master 10.0.19.128 --master 10.0.19.129 --node 10.0.19.130 --node 10.0.19.131 --version v1.22.0 --pkg-url /root/kube1.22.0.tar.gz自定义ssh端口号,如55:
sealos init --passwd '123456' --master 10.0.19.127:55 --master 10.0.19.128:55 --master 10.0.19.129:55 --node 10.0.19.130:55 --node 10.0.19.131:55 --version v1.22.0 --pkg-url /root/kube1.22.0.tar.gz验证集群是否升级成功
[root@k8s-master1 ~]# kubectl get node NAME STATUS ROLES AGE VERSION k8s-master1 Ready control-plane,master 14m v1.22.0 k8s-master2 Ready control-plane,master 13m v1.22.0 k8s-master3 Ready control-plane,master 13m v1.22.0 k8s-node1 Ready12m v1.22.0 k8s-node2 Ready 12m v1.22.0 修改Cgroup Driver
修改/etc/docker/daemon.json,新增: "exec-opts": ["native.cgroupdriver=systemd"] 重启docker服务: systemctl daemon-reload systemctl restart docker 查看修改后状态: docker info | grep Cgroupkubectl命令自动补全
sealos默认已经帮我们安装命令补全功能。echo "source <(kubectl completion bash)" >> ~/.bash_profile source ~/.bash_profilemaster节点操作
增加mastersealos join --master 192.168.198.127 --master 192.168.198.128 或者多个连续IP sealos join --master 192.168.198.127-192.168.198.128删除指定master节点
sealos clean --master 192.168.198.122 --master 192.168.198.123 或者多个连续IP sealos clean --master 192.168.198.122-192.168.198.123node节点操作
增加nodesealos join --node 192.168.198.127 --node 192.168.198.128 或者多个连续IP sealos join --node 192.168.198.127-192.168.198.128删除指定node节点
sealos clean --node 192.168.198.125 --node 192.168.198.126 或者多个连续IP sealos clean --node 192.168.198.125-192.168.198.126清理集群
sealos clean --all -f安装日志
13.kuboard
安装日志所在位置~/.sealos/sealos.log使用 hostPath 提供持久化
$ kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml # 您也可以使用下面的指令,唯一的区别是,该指令使用华为云的镜像仓库替代 docker hub 分发 Kuboard 所需要的镜像 # kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml $ watch kubectl get pods -n kuboard # 执行指令 watch kubectl get pods -n kuboard,等待 kuboard 名称空间中所有的 Pod 就绪,如下所示, # 如果结果中没有出现 kuboard-etcd-xxxxx 的容器,请查看 中关于 缺少 Master Role 的描述。 [root@node1 ~]# kubectl get pods -n kuboard NAME READY STATUS RESTARTS AGE kuboard-agent-2-65bc84c86c-r7tc4 1/1 Running 2 28s kuboard-agent-78d594567-cgfp4 1/1 Running 2 28s kuboard-etcd-fh9rp 1/1 Running 0 67s kuboard-etcd-nrtkr 1/1 Running 0 67s kuboard-etcd-ader3 1/1 Running 0 67s kuboard-v3-645bdffbf6-sbdxb 1/1 Running 0 67s访问 Kuboard
在浏览器中打开链接 http://服务器ip:30080 输入初始用户名和密码,并登录 用户名: admin 密码: Kuboard123配置并访问nginx
首先要创建 IngressClass进入集群 集群管理->网络->IngressClass 安装 IngressNginxController 并创建 IngressClass 输入名称 ingress-nginx创建 nginx pod
进入default名称空间 选择应用程序->工作负载->创建部署参考资料
https://blog.csdn.net/quejingshi/article/details/124298442更多资料分享:https://shimo.im/docs/vVAXVz8JggsWPnqm/ 《【持续更新中~】2022云原生技术栈必备资料包(技术点、面试、插件工具等)》,可复制链接后用石墨文档 App 或小程序打开



