k8s sealos安装
k8s sealos安装
1.1 简介
官网地址: https://github.com/labring/sealos
基于kubeadm安装
附属:
- 他用go基于ssh协议写了一个远程传递工具
- 他帮我们准备了资源包,里面包括安装脚本,配置文件和镜像,放在阿里云的存储上,不再需要担心网络问题影响部署
https://www.sealyun.com/zh-Hans/docs/Intro
目前sealos不是完全免费的,1.1版本左右的是免费的,稳定版测试的版本。1.2.3是收费的,一年100左右
2.1 部署架构
目前一些大型公司会用一个集群来部署同一种服务,而不是一个集群里部署多个服务。当然,如果只有十几台机器就没必要这样部署了
对于kubeadm来说,同一个集群中如果有多个etcd,就会自动称为etcd集群,这是kubeadm的功能,不是etcd的。
3.1 安装前准备
我们准备4台机器,组装三主一从,从节点没必要整那么多
192.168.40.130 k8s-master01
192.168.40.131 k8s-master02
192.168.40.132 k8s-master03
192.168.40.133 k8s-node1
//设置主机名
hostnamectl set-hostname k8s-master01
//拷贝主机文件到其他主机
cat /etc/hosts
192.168.40.130 k8s-master01
192.168.40.131 k8s-master02
192.168.40.132 k8s-master03
192.168.40.133 k8s-node1
scp /etc/hosts root@192.168.40.131:/etc/hosts
...
//安装依赖包
yum install -y conntrack ntpdate ntp ipvsadm ipset iptables curl sysstat libseccomp wget vim net-tools git chrony
//设置防火墙为 Iptables 并设置空规则
systemctl disable firewalld
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
//修改三个主节点的chrony,让他到阿里云同步时间
cat /etc/chrony.conf
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.0.0/16 //允许大网段,我这里没做很多限制
local stratum 10 //权重,master的节点1,2,3的权重最好不一样,为10,11,12即可
logdir /var/log/chrony
//修改一个从节点的chrony
cat /etc/chrony.conf
server 192.168.40.130 iburst //从三个master节点同步时间
server 192.168.40.131 iburst
server 192.168.40.132 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
//重启并开机自启后确认时间是否一致
systemctl restart chronyd;systemctl enable chronyd
//关闭 SELINUX
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
//调整内核参数,对于 K8S
cat > kubernetes.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
vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.overcommit_memory=1 # 不检查物理内存是否够用
vm.panic_on_oom=0 # 开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
sysctl -p /etc/sysctl.d/kubernetes.conf
//调整系统时区
//设置系统时区为 中国/上海
timedatectl set-timezone Asia/Shanghai
//将当前的 UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
//重启依赖于系统时间的服务
systemctl restart rsyslog
systemctl restart crond
//关闭系统不需要服务
systemctl stop postfix && systemctl disable postfix
//设置 rsyslogd 和 systemd journald
mkdir /var/log/journal # 持久化保存日志的目录
mkdir /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF
[Journal]
# 持久化保存到磁盘
Storage=persistent
# 压缩历史日志
Compress=yes
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000
# 最大占用空间 10G
SystemMaxUse=10G
# 单日志文件最大 200M
SystemMaxFileSize=200M
# 日志保存时间 2 周
MaxRetentionSec=2week
# 不将日志转发到 syslog
ForwardToSyslog=no
EOF
systemctl restart systemd-journald
echo "1" > /proc/sys/net/bridge/bridge-nf-call-iptables
//开启网桥和防火墙的连接模块
cat /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash
modprobe br_netfilter
//升级系统内核为 4.44
从网盘下载4.4内核
链接:https://pan.baidu.com/s/1m3jaUUSChfURDnGwzP_zJA
提取码:vbx0
//安装4.4内核,从网盘下载后上传到机器
yum -y install kernel-lt-4.4.222-1.el7.elrepo.x86_64.rpm
//设置开机从新内核启动
cat /boot/grub2/grub.cfg | grep 4.4
截取:CentOS Linux (4.4.222-1.el7.elrepo.x86_64) 7 (Core) 这一段
//设置开机自启
grub2-set-default 'CentOS Linux (4.4.222-1.el7.elrepo.x86_64) 7 (Core)'
//重启机器
reboot
uname -r 查看内核版本
系统初始化到这里就可以了,kubeadm等一些都是sealos自动帮我们安装的
4.1 安装Sealos
在开始安装前我们需要下载好两个包,我放到网盘里了
链接:https://pan.baidu.com/s/1m3jaUUSChfURDnGwzP_zJA
提取码:vbx0
- sealos
- kube1.16.0.tar.gz
//注意了注意:因为是用go写的一个ssh传递工具,所以需要没有像ansible那样很复杂,初始化时,几台机器的密码必须一样,初始化完成后可以再改成别的密码
//我们的所有机器必须2核心以上,否则报错。这些包我们上传到一个机器上即可,他们之间会相互复制
//下载并安装 sealos, sealos 是个 golang 的二进制工具,直接下载拷贝到 bin 目录即可, release 页面也可下载
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos && \
chmod +x sealos && mv sealos /usr/bin
//如果上面sealos没有下载,而是从网盘下载的,放到/usr/bin下后就可以初始化k8s集群了
mv sealos /usr/bin/;chmod 755 /usr/bin/sealos
//安装一个三 master 的 kubernetes 集群,他会把文件传递到所有节点,并用kubeadm部署k8s
sealos init --passwd 123456 --master 192.168.40.130 --master 192.168.40.131 --master 192.168.40.132 --node 192.168.40.133 --user root --version v1.16.0 --pkg-url=/root/kube1.16.0.tar.gz
//如果初始化报错,需要clean后再初始化,我这里其中一台机器1核心,他要求必须1核心以上,我这报错了。。
sealos clean --master 192.168.40.130 --master 192.168.40.131 --master 192.168.40.132 --node 192.168.40.133
4.1.1 增加 Master 节点
sealos join --master 192.168.0.6 --master 192.168.0.7
//或者多个连续 IP
sealos join --master 192.168.0.6-192.168.0.9
4.1.2 增加 node
sealos join --node 192.168.0.6 --node 192.168.0.7
//或者多个连续 IP
sealos join --node 192.168.0.6-192.168.0.9
4.1.3 删除指定 Master 节点
sealos clean --master 192.168.0.6 --master 192.168.0.7
//或者多个连续 IP
sealos clean --master 192.168.0.6-192.168.0.9
4.1.4 删除指定 node 节点
sealos clean --node 192.168.0.6 --node 192.168.0.7
//或者多个连续 IP
sealos clean --node 192.168.0.6-192.168.0.9
4.1.5 清理集群
sealos clean --all
4.1.6 备份集群
sealos etcd save
4.1.7 节点状态
//kube-scheduler 状态查看
kubectl get endpoints kube-scheduler -n kube-system -o yaml
NAME ENDPOINTS AGE
kube-scheduler <none> 12m
[root@k8s-master01 ~]# kubectl get endpoints kube-scheduler -n kube-system -o yaml
apiVersion: v1
kind: Endpoints
metadata:
annotations:
control-plane.alpha.kubernetes.io/leader: '{"holderIdentity":"k8s-master02_d9af3300-cdad-49ce-838a-2ccdd38fbf18","leaseDurationSeconds":15,"acquireTime":"2021-03-01T07:09:24Z","renewTime":"2021-03-01T07:21:27Z","leaderTransitions":1}'
creationTimestamp: "2021-03-01T07:08:32Z"
name: kube-scheduler
namespace: kube-system
resourceVersion: "2013"
selfLink: /api/v1/namespaces/kube-system/endpoints/kube-scheduler
uid: b34592b6-0fe0-4cdd-9887-4b5fc9e8de97
//kube-controller-manager 状态查看
kubectl get endpoints kube-controller-manager -n kube-system -o yaml
apiVersion: v1
kind: Endpoints
metadata:
annotations:
control-plane.alpha.kubernetes.io/leader: '{"holderIdentity":"k8s-master02_690df468-d680-4231-a8b9-4c8fa452eecf","leaseDurationSeconds":15,"acquireTime":"2021-03-01T07:09:24Z","renewTime":"2021-03-01T07:25:47Z","leaderTransitions":1}'
creationTimestamp: "2021-03-01T07:08:32Z"
name: kube-controller-manager
namespace: kube-system
resourceVersion: "2440"
selfLink: /api/v1/namespaces/kube-system/endpoints/kube-controller-manager
uid: 69f747dd-57d7-4aec-8443-9b3906ee9963
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!