sealos 是一个很不错的k8s 部署工具,内部实际上也是基于了kubeadm ,但是sealos 做了不少方便的扩展
比如自己搞了一层基于lvs 的ha ,可以简化我们k8s 环境ha 的问题(但是如果需要外部访问还是需要一层ha 方案的)
同时sealos 提供了自己的一套容器镜像仓库,离线部署也比较简单,升级也比较方便

参考部署配置

我们可以直接基于yaml 定义文件就可以了 参考

apiVersion: apps.sealos.io/v1beta1
kind: Cluster
metadata:
  creationTimestamp: null
  name: default
spec:
  hosts:
  - ips:
    - xxxx:22
    - xxxx:22
    - xxxx:22
    roles:
    - master
    - amd64
  - ips:
    - xxxx:22
    - xxxx:22
    - xxxx:22
    roles:
    - node
    - amd64
  image:
  - labring/kubernetes:v1.24.0
  - labring/helm:v3.8.2
  - labring/flannel:v0.21.4
  - labring/ingress-nginx:v1.5.1
  - labring/kubernetes-dashboard:v2.7.0
  ssh:
    passwd: xxxxxxx
    pk: /root/.ssh/id_rsa
    port: 22
    user: root
status: {}
---
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
networking:
  podSubnet: 10.244.0.0/16
  serviceSubnet: "10.96.0.0/22"
---
apiVersion: apps.sealos.io/v1beta1
kind: Config
metadata:
  name: flannel
spec:
  path: charts/flannel/values.yaml
  strategy: merge
  data: |
    podCidr: "10.244.0.0/16"
    flannel:
      backend: "vxlan"

注意helm 是必须的

说明

对于升级sealos 也支持了方便的操作,我们只需要通过sealos run labring/kubernetes:v1.25.0 就可以了,但是注意不能跨minor 版本,如果需要到
其他版本,需要通过间接升级(因为使用了kubeadm,这个也是kubeadm的限制 ),基于sealos 部署k8s 环境是一个很不错的选择,很值得使用

参考资料

https://sealos.io/zh-Hans/docs/Intro
https://github.com/labring/sealos
https://sealos.io/zh-Hans/docs/examples/how-to-upgrade-cluster
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/