sealos 一键安装 kubernetes1.18.0

只能用丝滑一词形容的kubernetes高可用安装工具,一条命令,离线安装,包含所有依赖,内核负载不依赖haproxy keepalived,纯golang开发,99年证书,支持v1.16 v1.17 v1.18 v1.19

post thumb
Kubernetes
作者 Louis 发表于 2020年6月1日

[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

参考

上一篇
sealos etcd及exec子命令使用相关