kubeykey是KubeSphere基于Go 语言开发的kubernetes集群部署程序。使用 KubeKey,您可以轻松、高效、灵活地单独或整体安装 Kubernetes 和 KubeSphere。
有三种情况可以使用 KubeKey。
- 仅安装 Kubernetes
- 使用一个命令安装 Kubernetes 和 KubeSphere
- 首先安装 Kubernetes,然后使用ks-installer 在其上部署 KubeSphere
重要提示:Kubekey 将会帮您安装 Kubernetes,若已有 Kubernetes 集群请参考 在 Kubernetes 之上安装 KubeSphere。
优势
- 基于 Ansible 的安装程序具有大量软件依赖性,例如 Python。
- KubeKey 是使用 Go
语言开发的,可以消除在各种环境中出现的问题,从而提高安装成功率。
KubeKey 使用 Kubeadm 在节点上尽可能多地并行安装 K8s
集群,以降低安装复杂性并提高效率。与较早的安装程序相比,它将大大节省安装时间。
KubeKey 支持将群集从 all-in-one
扩展到多节点群集甚至 HA 集群。 KubeKey 旨在将群集当作一个对象操作,即 CaaO。
参考:https://github.com/kubesphere/kubekey
kubekey部署kubernetes集群
下载kk部署工具
wget https://github.com/kubesphere/kubekey/releases/download/v1.0.0/kubekey-v1.0.0-linux-amd64.tar.gz
tar -zxvf kubekey-v1.0.0-linux-amd64.tar.gz
mv kk /usr/local/bin/
部署all-in-one单节点
安装依赖(可选)
yum install -y socat conntrack
仅部署kubernetes单节点
kk create cluster
同时部署kubernetes和kubesphere,可指定kubernetes版本或kubesphere版本
kk create cluster --with-kubernetes v1.18.6 --with-kubesphere v3.0.0
部署多节点集群
环境准备,确认节点时间同步即可,无需配置主机名,kubekey会自动纠正主机名。
yum install -y chrony
systemctl enable --now chronyd
timedatectl set-timezone Asia/Shanghai
创建示例配置文件
kk create config
创建示例配置文件,同时部署kubernetes和kubesphere,可指定版本、配置文件名称及保存路径
kk create config --with-kubernetes v1.18.6 --with-kubesphere v3.0.0 -f /root/config-sample.yaml
根据您的环境修改配置文件 config-sample.yaml,以下示例以部署3个master节点和1个node节点为例(不执行kubesphere部署,仅搭建kubernetes集群):
# vim config-sample.yaml
apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:
name: sample
spec:
hosts:
- {name: node1, address: 192.168.1.110, internalAddress: 192.168.1.110, user: root, password: 123456}
- {name: node2, address: 192.168.1.111, internalAddress: 192.168.1.111, user: root, password: 123456}
- {name: node3, address: 192.168.1.112, internalAddress: 192.168.1.112, user: root, password: 123456}
- {name: node4, address: 192.168.1.113, internalAddress: 192.168.1.113, user: root, password: 123456}
roleGroups:
etcd:
- node1
- node2
- node3
master:
- node1
- node2
- node3
worker:
- node4
controlPlaneEndpoint:
domain: lb.kubesphere.local
address: ""
port: "6443"
kubernetes:
version: v1.17.9
imageRepo: kubesphere
clusterName: cluster.local
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
registry:
registryMirrors: []
insecureRegistries: []
addons: []
当指定安装KubeSphere时,要求集群中有可用的持久化存储。默认使用localVolume,如果需要使用其他持久化存储,请参阅addons配置。
使用配置文件创建集群。
kk create cluster -f config-sample.yam
完成后查看集群状态
[root@node1 ~]# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
node1 Ready master 3m55s v1.17.9 192.168.1.110 <none> CentOS Linux 7 (Core) 3.10.0-1127.18.2.el7.x86_64 docker://19.3.8
node2 Ready master 3m20s v1.17.9 192.168.1.111 <none> CentOS Linux 7 (Core) 3.10.0-1127.18.2.el7.x86_64 docker://19.3.8
node3 Ready master 3m13s v1.17.9 192.168.1.112 <none> CentOS Linux 7 (Core) 3.10.0-1127.18.2.el7.x86_64 docker://19.3.8
node4 Ready worker 3m23s v1.17.9 192.168.1.113 <none> CentOS Linux 7 (Core) 3.10.0-1127.18.2.el7.x86_64 docker://19.3.8
[root@node1 ~]#
[root@node1 ~]#
[root@node1 ~]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-59d85c5c84-mzfz9 1/1 Running 0 3m31s
kube-system calico-node-j5gx7 1/1 Running 0 3m26s
kube-system calico-node-n4vwj 1/1 Running 0 3m31s
kube-system calico-node-tdgrv 1/1 Running 0 3m24s
kube-system calico-node-zc27d 1/1 Running 0 3m17s
kube-system coredns-74d59cc5c6-kspd4 1/1 Running 0 3m41s
kube-system coredns-74d59cc5c6-ll7kt 1/1 Running 0 3m41s
kube-system kube-apiserver-node1 1/1 Running 0 3m53s
kube-system kube-apiserver-node2 1/1 Running 0 3m22s
kube-system kube-apiserver-node3 1/1 Running 0 2m12s
kube-system kube-controller-manager-node1 1/1 Running 0 3m53s
kube-system kube-controller-manager-node2 1/1 Running 0 3m21s
kube-system kube-controller-manager-node3 1/1 Running 0 115s
kube-system kube-proxy-hk6c5 1/1 Running 0 3m41s
kube-system kube-proxy-k5d8w 1/1 Running 0 3m17s
kube-system kube-proxy-lv6wk 1/1 Running 0 3m27s
kube-system kube-proxy-pqdgb 1/1 Running 0 3m24s
kube-system kube-scheduler-node1 1/1 Running 0 3m53s
kube-system kube-scheduler-node2 1/1 Running 0 3m21s
kube-system kube-scheduler-node3 1/1 Running 0 116s
kube-system nodelocaldns-6kq4c 1/1 Running 0 3m27s
kube-system nodelocaldns-7xbc9 1/1 Running 0 3m24s
kube-system nodelocaldns-9r7v4 1/1 Running 0 3m41s
kube-system nodelocaldns-rkv2d 1/1 Running 0 3m17s
启用多集群管理
默认情况下,Kubekey 将仅安装一个 Solo 模式的单集群,即未开启 Kubernetes 多集群联邦。如果您希望将 KubeSphere 作为一个支持多集群集中管理的中央面板,您需要在config-example.yaml中设置ClusterRole
。关于多集群的使用文档,请参考如何启用多集群。
开启可插拔功能组件
KubeSphere 从 2.1.0 版本开始对 Installer 的各功能组件进行了解耦,快速安装将默认仅开启最小化安装(Minimal Installation),Installer 支持在安装前或安装后自定义可插拔的功能组件的安装。使最小化安装更快速轻量且资源占用更少,也方便不同用户按需选择安装不同的功能组件。
KubeSphere 有多个可插拔功能组件,功能组件的介绍可参考配置示例。您可以根据需求,选择开启安装 KubeSphere 的可插拔功能组件。我们非常建议您开启这些功能组件来体验 KubeSphere 完整的功能以及端到端的解决方案。请在安装前确保您的机器有足够的 CPU 与内存资源。开启可插拔功能组件可参考开启可选功能组件。
添加节点
将新节点的信息添加到群集配置文件,然后应用更改。
kk add nodes -f config-sample.yaml
删除节点
通过以下命令删除节点,nodename指需要删除的节点名。
kk delete node <nodeName> -f config-sample.yaml
删除集群
如果您以快速入门(all-in-one)开始:
kk delete cluster
如果从高级安装开始(使用配置文件创建的集群):
kk delete cluster [-f config-sample.yaml]
集群升级
单节点集群,升级单集群到指定版本。
kk upgrade [--with-kubernetes version] [--with-kubesphere version]
--with-kubernetes
指定kubernetes目标版本。--with-kubesphere
指定kubesphere目标版本。
多节点集群,通过指定配置文件对集群进行升级。
kk upgrade [--with-kubernetes version] [--with-kubesphere version] [(-f | --file) path]
--with-kubernetes
指定kubernetes目标版本。--with-kubesphere
指定kubesphere目标版本。-f
指定集群安装时创建的配置文件。
注意: 升级多节点集群需要指定配置文件. 如果集群非kubekey创建,或者创建集群时生成的配置文件丢失,需要重新生成配置文件,或使用以下方法生成。
Getting cluster info and generating kubekey’s configuration file (optional).
kk create config [--from-cluster] [(-f | --file) path] [--kubeconfig path]
--from-cluster
根据已存在集群信息生成配置文件.-f
指定生成配置文件路径.--kubeconfig
指定集群kubeconfig文件.- 由于无法全面获取集群配置,生成配置文件后,请根据集群实际信息补全配置文件