kubernetes,一条命令构建k8s高可用集群且不依赖haproxy和keepalived,也无需ansible。通过内核ipvs对apiserver进行负载均衡,并且带apiserver健康检测。
https://www.sealyun.com/zh-Hans/docs/Intro
https://github.com/fanux/sealos/releases
https://github.com/kubernetes/kubernetes/releases
环境信息
| 主机名 | IP地址 |
|---|
| master0 | 192.168.10.4 |
| master1 | 192.168.10.5 |
| node0 | 192.168.10.6 |
# 服务器密码:123456
# 主机名
hostnamectl set-hostname master0
hostnamectl set-hostname master1
hostnamectl set-hostname node0
# kubernetes高可用安装教程, 只需要准备好服务器,在任意一台服务器上执行下面命令即可
# 下载并安装sealos, sealos是个golang的二进制工具,直接下载拷贝到bin目录即可
# 下载并安装sealos, sealos是个golang的二进制工具,直接下载拷贝到bin目录即可, release页面也可下载
wget https://github.com/fanux/sealos/releases/download/v3.3.7/sealos && \
chmod +x sealos && mv sealos /usr/bin
or
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos && \
chmod +x sealos && mv sealos /usr/bin
# 下载离线资源包
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/d551b0b9e67e0416d0f9dce870a16665-1.18.0/kube1.18.0.tar.gz
# 安装一个三master的kubernetes集群
sealos init --passwd 123456 \
--master 192.168.10.4 --master 192.168.10.5 \
--node 192.168.10.6 \
--pkg-url https://github.com/kubernetes/kubernetes/archive/v1.18.3.tar.gz \
--version v1.18.3
or
sealos init --passwd 123456 \
--master 192.168.10.4 --master 192.168.10.5 \
--node 192.168.10.6 \
--pkg-url /root/kube1.18.0.tar.gz \
--version v1.18.0
cd /opt
wget https://github.com/fanux/sealos/releases/download/v3.3.7/sealos && \
chmod +x sealos && mv sealos /usr/bin
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/d551b0b9e67e0416d0f9dce870a16665-1.18.0/kube1.18.0.tar.gz
sealos init --passwd 123456 --master 192.168.10.4 --master 192.168.10.5 --node 192.168.10.6 --user root --pkg-url /opt/kube1.18.0.tar.gz --version v1.18.0
参数含义
| 参数名 | 含义 | 示例 |
|---|
| passwd | 服务器密码 | 123456 |
| master | k8s master节点IP地址 | 192.168.0.2 |
| node | k8s node节点IP地址 | 192.168.0.3 |
| pkg-url | 离线资源包地址,支持下载到本地,或者一个远程地址 | /root/kube1.16.0.tar.gz |
| version | 对应的版本 | v1.16.0 |
检查安装是否正常:
kubectl get node
kubectl get pod --all-namespaces
# 应用安装
kuboard https://github.com/sealstore/dashboard/releases
sealos install --pkg-url https://github.com/sealstore/dashboard/releases/download/v1.0-2/kuboard.tar
dashboard https://github.com/sealstore/dashboard/releases
sealos install --pkg-url https://github.com/sealstore/dashboard/releases/download/v2.0.0-bata5.3/dashboard.tar
prometheus https://github.com/sealstore/prometheus/releases
sealos install --pkg-url https://github.com/sealstore/prometheus/releases/download/v0.31.1/prometheus.tar
ingress https://github.com/sealstore/ingress/releases
sealos install --pkg-url https://github.com/sealstore/ingress/releases/download/v0.15.2/contour.tar
sealos install --pkg-url /opt/kuboard.tar
sealos install --pkg-url /opt/dashboard.tar
sealos install --pkg-url /opt/prometheus.tar
sealos install --pkg-url /opt/contour.tar
# dashboard访问
使用上述命令安装完dashboard后日志中会输出token,登录页面时需要使用.
https://你的master地址:32000
# 获取token
kubectl get secret -nkubernetes-dashboard $(kubectl get secret -n kubernetes-dashboard|grep dashboard-token |awk '{print $1}') -o jsonpath='{.data.token}' | base64 --decode
增加master
增加node
删除指定master节点
删除指定node节点
清理集群
TIP
系统支持:centos7.2以上 ubuntu16.04以上 内核推荐4.14以上
推荐配置:centos7.4
注意事项
- 必须同步所有服务器时间
- 所有服务器主机名不能重复
# 确认节点时间同步
hostnamectl set-hostname xx
yum install -y chrony
systemctl enable --now chronyd
timedatectl set-timezone Asia/Shanghai
# 验证所有节点时间是否同步
timedatectl
# 确认 k8s 集群已经就绪:
[root@k8s-master1 ~]# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k8s-master1 Ready master 5m57s v1.18.8 192.168.1.102 <none> CentOS Linux 7
[root@k8s-master1 ~]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-84445dd79f-ntnf2 1/1 Running 0 5m50s
kube-system calico-node-6dnfd 1/1 Running 0 5m39s
# 确认 k8s 集群已经就绪
# 升级 Kubernetes 集群版本
升级所有节点的 Kubeadm 并导入新的镜像。
升级 Master 节点上的 Kubelet。
升级其它 Master 节点。
升级 Node 节点。
验证集群状态。
#1 升级 Kubeadm
#主要用于更新 Kubeadm、Kubectl、Kubelet 等二进制文件,并导入新版本的镜像。升级方法很简单,只需复制离线包到所有节点并执行以下命令。
cd kube/shell && sh init.sh
#2 升级 Master 节点上的 Kubelet
#只需要把新版本的 Kubelet 复制到 /usr/bin 目录下替换旧版本,然后重启 Kubelet 服务即可。
kubeadm upgrade plan
kubeadm upgrade apply v1.16.0
# 重启 Kubelet
systemctl restart kubelet
其中最重要的 kubeadm upgrade apply 命令主要完成以下一些操作。
验证集群是否可升级并执行版本升级策略。
确认离线包中相关镜像是否可用。
对控制组件的容器进行升级,失败就回滚。
对 Kube-DNS 和 Kube-Proxy 进行升级。
创建新的证书文件并备份旧的证书文件。
#3 升级其它 Master 节点
kubeadm upgrade apply
#4 升级 Node 节点
#升级 Node 节点前,首先要驱逐节点。
kubectl drain $NODE --ignore-daemonsets
#其次,是更新 Kubelet 的配置文件和升级 Node 节点的 Kubelet。
kubeadm upgrade node config --kubelet-version v1.16.0
# 同样是替换二进制文件并重启 Kubelet
systemctl restart kubelet
#最后,恢复 Node 节点为可调度状态。
kubectl uncordon $NODE
#5 验证集群是否升级成功
kubectl get nodes
# 如果输出的节点的版本信息是和升级的版本一致的话,一切就搞定了!
# 鲲鹏-arm
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos-arm64 &&
chmod +x sealos-arm64 && mv sealos-arm64 /usr/bin/sealos
-安装一个三master的kubernetes集群
sealos init --passwd 123456 \
--master 192.168.10.4 --master 192.168.10.5 \
--node 192.168.10.6 \
--pkg-url https://github.com/kubernetes/kubernetes/archive/v1.18.3.tar.gz \
--version v1.18.3
or
sealos init --passwd meiya@2021 --master 27.159.75.113 --user admin --pkg-url /data/v1.17.9.tar.gz --version v1.17.9
---下载离线资源包
wget https://sealyun.oss-cn-beijing.aliyuncs.com/413bd3624b2fb9e466601594b4f72072-1.17.0/kube1.17.0.tar.gz
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/7b6af025d4884fdd5cd51a674994359c-1.18.0/kube1.18.0.tar.gz
# sealos+rook 部署 kubeSphere+TiDB
https://blog.csdn.net/alex_yangchuansheng/article/details/109127206
# Sealos安装Kubernetes v1.16.0 HA集群
https://blog.51cto.com/13231454/2448838
https://blog.csdn.net/qq_43138678/article/details/111358525