快速构建Kubesphere 3.0并设置Kubesphere 多集群联邦

2023年 5月 4日 52.4k 0

这里我们Host选择使用单节点All-in-One安装模式,可以零配置快速部署 KubeSphere和Kubernetes。我们安装联邦集群需要有一台节点进行管理。

Member需要在Kubernetes中安装Kubesphere当作Member节点,这里我使用Kubesphere 3.3版本,Kubernetes 1.24进行部署测试

多集群联邦架构图如下
1681136514786.png
服务器最小配置

支持操作系统
最低配置
Ubuntu 16.04, 18.04, 20.04, 22.04 2 核 CPU,4 GB 内存,40 GB 磁盘空间
Debian Buster Stretch 2 核 CPU,4 GB 内存,40 GB 磁盘空间
CentOS 7.x 2 核 CPU,4 GB 内存,40 GB 磁盘空间
Red Hat Enterprise Linux 7 2 核 CPU,4 GB 内存,40 GB 磁盘空间
SUSE Linux Enterprise Server 15/openSUSE Leap 15.2 2 核 CPU,4 GB 内存,40 GB 磁盘空间

依赖项要求
KubeKey 可以将 Kubernetes 和 KubeSphere 一同安装。针对不同的 Kubernetes 版本,需要安装的依赖项可能有所不同。您可以参考以下列表,查看是否需要提前在节点上安装相关的依赖项。

依赖项
Kubernetes 版本 ≥ 1.18
Kubernetes 版本 < 1.18
socat 必须 可选但建议
conntrack 必须 可选但建议
ebtables 可选但建议 可选但建议
ipset 可选但建议 可选但建议

使用脚本一键部署Kubesphere

安装依赖

yum install -y socat ipset ipvsadm conntrack-tools 

#docker可选项,可以不安装或者自行安装,我这里就跳过docker安装的步骤了

当依赖安装完毕,我们就可以下载脚本

mkdir /root/ks && cd /root/ks
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -

下载完脚本进行执行脚本,我这里只部署一台host节点,不运行容器,通过接入的方式管理其它Kubernetes

chmod +x kk

执行脚本,创建cluster集群

[root@ops ks]# ./kk create cluster --with-kubernetes v1.22.12 --with-kubesphere v3.3.2
#这里直接执行即可

 _   __      _          _   __           
| | / /     | |        | | / /           
| |/ / _   _| |__   ___| |/ /  ___ _   _ 
|    | | | | '_  / _      / _  | | |
| |   |_| | |_) |  __/ |    __/ |_| |
_| _/__,_|_.__/ ____| _/___|__, |
                                    __/ |
                                   |___/

21:37:55 CST [GreetingsModule] Greetings
21:37:55 CST message: [ops]
Greetings, KubeKey!
21:37:55 CST success: [ops]
21:37:55 CST [NodePreCheckModule] A pre-check on nodes
21:37:56 CST success: [ops]
21:37:56 CST [ConfirmModule] Display confirmation form
+------+------+------+---------+----------+-------+-------+---------+-----------+--------+---------+------------+------------+-------------+------------------+--------------+
| name | sudo | curl | openssl | ebtables | socat | ipset | ipvsadm | conntrack | chrony | docker  | containerd | nfs client | ceph client | glusterfs client | time         |
+------+------+------+---------+----------+-------+-------+---------+-----------+--------+---------+------------+------------+-------------+------------------+--------------+
| ops  | y    | y    | y       | y        | y     | y     | y       | y         | y      | 20.10.8 | v1.4.9     | y          |             |                  | CST 21:37:56 |
+------+------+------+---------+----------+-------+-------+---------+-----------+--------+---------+------------+------------+-------------+------------------+--------------+

#前面几个为必选项,如果不安装脚本会有提示,我这里都安装过了

当打印完配置后,我们继续下一步 输入yes

Continue this installation? [yes/no]: yes
...
clusterrolebinding.rbac.authorization.k8s.io/ks-installer unchanged
deployment.apps/ks-installer unchanged
clusterconfiguration.installer.kubesphere.io/ks-installer configured
21:40:02 CST success: [ops]
#####################################################
###              Welcome to KubeSphere!           ###
#####################################################

这下面就是我们的Kubesphere 信息

Console: http://192.168.31.101:30880
Account: admin
Password: P@88w0rd
NOTES:
  1. After you log into the console, please check the
     monitoring status of service components in
     "Cluster Management". If any service is not
     ready, please wait patiently until all components 
     are up and running.
  2. Please change the default password after login.

#####################################################
https://kubesphere.io             2023-04-10 21:52:38
#####################################################
21:52:41 CST success: [ops]
21:52:41 CST Pipeline[CreateClusterPipeline] execute successfully
Installation is complete.

Please check the result using the command:

        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

安装过程中可能会因网络或者其它问题导致服务异常,这个我们重复执行脚本即可!

设置Kubesphere 多集群联邦

首先登录平台
访问:http://youip:30880
1681138426399.png
接下来我们修改Kubesphere中的crd资源
找到ClusterConfiguration
1681138542216.png
编辑yaml1681138579422.png
找到下面的配置,修改为host 默认为none

  multicluster:
    clusterRole: host

相关的2行最好都修改了,然后点击确定。1681138666097.png
1681138689004.png
等待1-5分钟,重新登录集群
此时我们就可以添加额外的集群了1681138771466.png
过滤jwtSecret,用于

kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v "apiVersion" | grep jwtSecret

添加集群测试

在自建的K8s当中,我们还需要创建sc

cat >>default-storage-class.yaml<<EOF
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: local
  annotations:
    cas.openebs.io/config: |
      - name: StorageType
        value: "hostpath"
      - name: BasePath
        value: "/var/openebs/local/"
    kubectl.kubernetes.io/last-applied-configuration: >
      {"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{"cas.openebs.io/config":"-
      name: StorageTypen  value: "hostpath"n- name: BasePathn  value:
      "/var/openebs/local/"n","openebs.io/cas-type":"local","storageclass.beta.kubernetes.io/is-default-class":"true","storageclass.kubesphere.io/supported-access-modes":"["ReadWriteOnce"]"},"name":"local"},"provisioner":"openebs.io/local","reclaimPolicy":"Delete","volumeBindingMode":"WaitForFirstConsumer"}
    openebs.io/cas-type: local
    storageclass.beta.kubernetes.io/is-default-class: 'true'
    storageclass.kubesphere.io/supported-access-modes: '["ReadWriteOnce"]'
provisioner: openebs.io/local
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
EOF

kubectl apply -f default-storage-class.yaml

检查sc创建状态

[root@k8s-master-01 ks]# kubectl get sc -A
NAME              PROVISIONER        RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local (default)   openebs.io/local   Delete          WaitForFirstConsumer   false                  144m

接下来在Kubernetes中安装Kubesphere member节点使用

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.3.2/kubesphere-installer.yaml

wget https://github.com/kubesphere/ks-installer/releases/download/v3.3.2/cluster-configuration.yaml

修改配置文件

vim cluster-configuration.yaml
#修改clusterRole类型为member

  multicluster:
    clusterRole: member  #修改member

修改jwtSecret配置,这个变量是从host环境中生成的

vim cluster-configuration.yaml
#复制host节点上面的配置
    jwtSecret: "TlCHvpWOiGoOQUn3QoTEi5SGbEuam0NC" 

检查安装日志:

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

这里的链接方式我们就直接使用直连
1681201403147.png
上传config文件

cat $HOME/.kube/config

1681201539552.png
添加完成后,我们就可以在集群中看到了1681218191200.png

相关文章:

  1. Kubernetes 滚动更新及回滚
  2. 持久化存储 StorageClass
  3. Kubernetes 监控工具 Weave Scope
  4. kubeadm 搭建Kubernetes 1.18集群

相关文章

KubeSphere 部署向量数据库 Milvus 实战指南
探索 Kubernetes 持久化存储之 Longhorn 初窥门径
征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
那些年在 Terraform 上吃到的糖和踩过的坑
无需 Kubernetes 测试 Kubernetes 网络实现
Kubernetes v1.31 中的移除和主要变更

发布评论