[TOC]
一个二进制工具加一个资源包,不依赖haproxy keepalived ansible等重量级工具,一条命令就可实现kubernetes高可用集群构建, 无论是单节点还是集群,单master还是多master,生产还是测试都能很好支持!简单不意味着阉割功能,照样能全量支持kubeadm所有配置。 立即获取sealos
sealos特性与优势:
- 支持离线安装,工具与资源包(二进制程序 配置文件 镜像 yaml文件等)分离,这样不同版本替换不同离线包即可
- 百年证书
- 使用简单
- 支持自定义配置
- 内核负载,极其稳定,因为简单所以排查问题也极其简单
- 不依赖ansible haproxy keepalived, 一个二进制工具,0依赖
- 资源包放在阿里云oss上,再也不用担心网速
- dashboard ingress prometheus等APP 同样离线打包,一键安装
- etcd一键备份(etcd原生api调用)。支持上传至oss,实现异地备份, 用户无需关心细节。
效果图
dashboard
grafana
环境准备
主机名
设置永久主机名称,然后重新登录:
$ hostnamectl set-hostname k8s-master # 将 master 替换为当前主机名
$ cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
- 设置的主机名保存在
/etc/hostname
文件中;
如果 DNS 不支持解析主机名称,则需要修改每台机器的 /etc/hosts
文件,添加主机名和 IP 的对应关系:
cat >> /etc/hosts <<EOF
192.168.59.128 k8s-master
192.168.59.133 k8s-node1
192.168.59.134 k8s-node2
EOF
一键安装k8s集群
$ 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/7b6af025d4884fdd5cd51a674994359c-1.18.0/kube1.18.0.tar.gz
$ sealos init --passwd 123456 \
--master 192.168.59.128 \
--node 192.168.59.133 \
--node 192.168.59.134 \
--pkg-url /root/kube1.18.0.tar.gz \
--version v1.18.0
安装ingress-controller
$ kubectl apply -f https://kuboard.cn/install-script/v1.18.x/nginx-ingress.yaml
安装k8s集群管理页面
$ sealos install --pkg-url https://github.com/sealstore/dashboard/releases/download/v1.0-1/kuboard.tar
安装k8s-prometheus监控
$ git clone https://github.com/coreos/kube-prometheus.git
$ cd kube-prometheus
$ kubectl create -f manifests/setup
$ until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
$ kubectl create -f manifests/
这里官方并没有给出ingress的配置文件. 我用的如下文件.这个是用kuboard生成的默认文件. 建议用kuboard添加ingress, 方便快捷.
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
k8s.eip.work/workload: grafana
creationTimestamp: '2020-06-01T08:52:09Z'
generation: 2
labels:
app: grafana
managedFields:
- apiVersion: networking.k8s.io/v1beta1
fieldsType: FieldsV1
fieldsV1:
'f:metadata': {}
manager: Mozilla
operation: Update
time: '2020-06-01T09:15:12Z'
name: grafana
namespace: monitoring
resourceVersion: '833297'
selfLink: /apis/networking.k8s.io/v1beta1/namespaces/monitoring/ingresses/grafana
uid: 63c58ae7-8e4a-4d5e-a4b5-56635e3adb02
spec:
rules:
- host: moni.fenghong.tech
http:
paths:
- backend:
serviceName: grafana
servicePort: http
path: /
pathType: ImplementationSpecific
tls:
- hosts:
- moni.fenghong.tech
secretName: fenghong.tech