使用官方kk脚本部署KubeSphere

参考:
KubeSphere文档
https://www.kubesphere.io/zh/docs/v3.3/installing-on-linux/on-premises/install-kubesphere-on-vmware-vsphere/

节点分布

1
2
3
4
5
6
172.16.11.11    master1a
172.16.11.12 node1a
172.16.11.13 node2a
172.16.11.21 master1b
172.16.11.22 node1b
172.16.11.23 node2b

部署KubeSphere

修改配置文件

从 GitHub Release Page 下载 KubeKey 或直接使用以下命令。(可以通过VERSION指定KubeKey)

1
2
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -
chmod +x kk

指定kubernetes和kubesphere版本,不指定 KubeSphere 版本,则会安装最新版本的 KubeSphere,我没有指定kubernetes版本,20230514默认为v1.23.10

1
./kk create config --with-kubernetes --with-kubesphere v3.3.2

默认文件 config-sample.yaml 创建后,根据您的环境修改该文件。

1
vi ~/config-sample.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
name: sample
spec:
hosts:
- {name: master1a, address: 172.16.11.11, internalAddress: 172.16.11.11, user: root, password: "password"}
- {name: node1a, address: 172.16.11.12, internalAddress: 172.16.11.12, user: root, password: "password"}
- {name: node2a, address: 172.16.11.13, internalAddress: 172.16.11.13, user: root, password: "password"}
- {name: master1b, address: 172.16.11.21, internalAddress: 172.16.11.21, user: root, password: "password"}
- {name: node1b, address: 172.16.11.22, internalAddress: 172.16.11.22, user: root, password: "password"}
- {name: node2b, address: 172.16.11.23, internalAddress: 172.16.11.23, user: root, password: "password"}
roleGroups:
etcd:
- master1a
- master1b
control-plane:
- master1a
- master1b
worker:
- node1a
- node2a
- node1b
- node2b
controlPlaneEndpoint:
## Internal loadbalancer for apiservers
# internalLoadbalancer: haproxy

domain: vip.cluster.local
#vip address
address: "172.16.10.1"
port: 6443
kubernetes:
version: --with-kubesphere
clusterName: cluster.local
autoRenewCerts: true
containerManager:
etcd:
type: kubekey
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
multusCNI:
enabled: false
registry:
privateRegistry: ""
namespaceOverride: ""
registryMirrors: []
insecureRegistries: []
addons: []

#···
# 其它配置可以在安装后之后根据需要进行修改(官方说的)

其实后面有个KubeSphere的应用商店的配置,默认是false,如果需要使用改true
即使这里没有修改,部署完成后也是可以手动添加应用商店,后面会提到.

1
2
3
openpitrix:
store:
enabled: false

持久化存储配置

官方:
如本文开头的前提条件所说,对于生产环境,我们建议您准备持久性存储,可参考以下说明进行配置。若搭建开发和测试环境,您可以跳过这小节,直接使用默认集成的 OpenEBS 的 LocalPV 存储。

继续编辑上述config-sample.yaml文件,找到[addons]字段,这里支持定义任何持久化存储的插件或客户端,如 NFS Client、Ceph、GlusterFS、CSI,根据您自己的持久化存储服务类型,并参考 持久化存储服务 中对应的示例 YAML 文件进行设置。

参考文档:https://www.kubesphere.io/zh/docs/v3.3/installing-on-linux/persistent-storage-configurations/understand-persistent-storage/

本次部署,没有部署kubesphere的持久性存储,只对后面Nginx的配置文件和证书做了持久性存储.

执行创建集群

使用上面自定义的配置文件创建集群:

1
./kk create cluster -f config-sample.yaml

根据表格的系统依赖的前提条件检查,如果相关依赖都显示 √,则可以输入 yes 继续执行安装。
建议安装全部的相关依赖

验证安装结果

此时可以看到安装日志自动输出,或者可以再打开一个 SSH 手动检查安装日志,然后等待安装成功。

1
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

有时候这个安装日志不一定输出官方的安装结果
使用kubectl查看控制面板状态ks-console

1
2
3
4
5
6
7
[root@master1a ~]#  kubectl  -n kubesphere-system get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ks-apiserver ClusterIP 10.233.13.35 <none> 80/TCP 18d
ks-console NodePort 10.233.29.48 <none> 80:30880/TCP 18d
ks-controller-manager ClusterIP 10.233.54.17 <none> 443/TCP 18d
minio ClusterIP 10.233.29.49 <none> 9000/TCP 13d
redis ClusterIP 10.233.51.65 <none> 6379/TCP 18d

通过30880端口访问
kubesphere部署完成