Linux多节点使用KubeKey部署KubeSphere
Posted 爱上口袋的天空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux多节点使用KubeKey部署KubeSphere相关的知识,希望对你有一定的参考价值。
1、简介
在上两篇,讲解了基于Kubernetes部署和基于Linux单节点部署KubeSphere。在生产环境中,由于单节点集群资源有限、计算能力不足,无法满足大部分需求,因此不建议在处理大规模数据时使用单节点集群。此外,单节点集群只有一个节点,因此也不具有高可用性。相比之下,在应用程序部署和分发方面,多节点架构是最常见的首选架构。
概念
多节点集群由至少一个主节点和一个工作节点组成。您可以使用任何节点作为任务机来执行安装任务,也可以在安装之前或之后根据需要新增节点(例如,为了实现高可用性)。Master:主节点,通常托管控制平面,控制和管理整个系统。
Worker:工作节点,运行部署在工作节点上的实际应用程序。官方部署文档:https://kubesphere.com.cn/docs/installing-on-linux/introduction/multioverview/
2、环境说明
CentOS7.9
每台机器:4VCPU+4G
使用华为云的服务器2.1、配置前置环境(在所有节点做操作)
1、修改主机名,一台叫master、另外两台叫做node1、node2
hostnamectl set-hostname xxx
2、关闭防火墙,Selinux,iptables
systemctl stop firewalld systemctl enable firewalld setenforce 0 sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config iptables -F
3、下载KubeKey文件(在master节点执行)
[root@master ~]# export KKZONE=cn #导入个环境变量 [root@master ~]# curl -sfL https://get-kk.kubesphere.io | VERSION=v2.0.0 sh - #下载kk(KubeKey)文件 [root@master ~]# chmod +x kk #赋予kk文件可执行权限
4、创建集群(在master节点执行)
注意,和单节点部署不同的是,对于多节点安装,我们需要通过指定配置文件来创建集群。
先创建示例配置文件,之后修改相关配置,然后根据此配置文件创建集群1、创建示例配置文件
./kk create config --with-kubernetes v1.21.5 --with-kubesphere v3.2.1 #指定Kubernetes版本,指定KubeSphere版本 [root@master ~]# ll total 68480 -rw-r--r-- 1 root root 4777 Apr 8 20:35 config-sample.yaml #运行此命令之后,会产生个config-sample.yaml文件,它就是集群的配置文件。 -rwxr-xr-x 1 1001 121 53764096 Mar 8 13:05 kk -rw-r--r-- 1 root root 16348932 Apr 8 20:24 kubekey-v2.0.0-linux-amd64.tar.gz
当然如果你想,你还可以通过自己写的配置文件创建集群,这个方法复杂此处采用第一种方法
./kk create config [-f ~/myfolder/abc.yaml]
2、编辑配置文件
以下是多节点集群(具有一个主节点)配置文件的示例:
我们必须修改的有两处,其余的看情况:[root@master ~]# cat config-sample.yaml apiVersion: kubekey.kubesphere.io/v1alpha2 kind: Cluster metadata: name: sample spec: hosts: #下面的有几台机器,就写几条信息,其中:name:节点的主机名。address:任务机和其他实例通过 SSH 相互连接所使用的 IP 地址,就填写自己节点的内网IP。internalAddress:填写节点的内网IP,user:指定Linux操作系统的用户,这里我的是root用户。password:root用户的密码。 - name: master, address: 192.168.0.223, internalAddress: 192.168.0.223, user: root, password: "Zbzr0823" - name: node1, address: 192.168.0.108, internalAddress: 192.168.0.108, user: root, password: "Zbzr0823" - name: node2, address: 192.168.0.14, internalAddress: 192.168.0.14, user: root, password: "Zbzr0823" roleGroups: etcd: #指定etcd安装在那个节点 - master #安装在master节点 control-plane: #指定控制平面的节点 - master #指定master控制平面是master节点 worker: #指定有哪几个work节点,如果也想要master节点加入work节点,也可以如下格式进行填写。 - node1 - node2 controlPlaneEndpoint: ## Internal loadbalancer for apiservers # internalLoadbalancer: haproxy domain: lb.kubesphere.local address: "" port: 6443 kubernetes: version: v1.21.5 clusterName: cluster.local 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: plainHTTP: false privateRegistry: "" namespaceOverride: "" registryMirrors: [] insecureRegistries: [] addons: [] --- #以下部分是可选的修改,就是关于开启插件的配置,我在基于Kubernetes平台安装KubeSphere那篇文章有详细说明,如果你的集群配置性能非常好,那你可以选择性的开启插件,如果不做修改,默认是最小化安装KubeSphere。(就是将false--->true) apiVersion: installer.kubesphere.io/v1alpha1 kind: ClusterConfiguration metadata: name: ks-installer namespace: kubesphere-system labels: version: v3.2.1 spec: persistence: storageClass: "" authentication: jwtSecret: "" local_registry: "" namespace_override: "" # dev_tag: "" etcd: monitoring: false endpointIps: localhost port: 2379 tlsEnable: true common: core: console: enableMultiLogin: true port: 30880 type: NodePort # apiserver: # resources: # controllerManager: # resources: redis: enabled: false volumeSize: 2Gi openldap: enabled: false volumeSize: 2Gi minio: volumeSize: 20Gi monitoring: # type: external endpoint: http://prometheus-operated.kubesphere-monitoring-system.svc:9090 GPUMonitoring: enabled: false gpu: kinds: - resourceName: "nvidia.com/gpu" resourceType: "GPU" default: true es: # master: # volumeSize: 4Gi # replicas: 1 # resources: # data: # volumeSize: 20Gi # replicas: 1 # resources: logMaxAge: 7 elkPrefix: logstash basicAuth: enabled: false username: "" password: "" externalElasticsearchHost: "" externalElasticsearchPort: "" alerting: enabled: false # thanosruler: # replicas: 1 # resources: auditing: enabled: false # operator: # resources: # webhook: # resources: devops: enabled: false jenkinsMemoryLim: 2Gi jenkinsMemoryReq: 1500Mi jenkinsVolumeSize: 8Gi jenkinsJavaOpts_Xms: 512m jenkinsJavaOpts_Xmx: 512m jenkinsJavaOpts_MaxRAM: 2g events: enabled: false # operator: # resources: # exporter: # resources: # ruler: # enabled: true # replicas: 2 # resources: logging: enabled: false containerruntime: docker logsidecar: enabled: true replicas: 2 # resources: metrics_server: enabled: false monitoring: storageClass: "" # kube_rbac_proxy: # resources: # kube_state_metrics: # resources: # prometheus: # replicas: 1 # volumeSize: 20Gi # resources: # operator: # resources: # adapter: # resources: # node_exporter: # resources: # alertmanager: # replicas: 1 # resources: # notification_manager: # resources: # operator: # resources: # proxy: # resources: gpu: nvidia_dcgm_exporter: enabled: false # resources: multicluster: clusterRole: none network: networkpolicy: enabled: false ippool: type: none topology: type: none openpitrix: store: enabled: false servicemesh: enabled: false kubeedge: enabled: false cloudCore: nodeSelector: "node-role.kubernetes.io/worker": "" tolerations: [] cloudhubPort: "10000" cloudhubQuicPort: "10001" cloudhubHttpsPort: "10002" cloudstreamPort: "10003" tunnelPort: "10004" cloudHub: advertiseAddress: - "" nodeLimit: "100" service: cloudhubNodePort: "30000" cloudhubQuicNodePort: "30001" cloudhubHttpsNodePort: "30002" cloudstreamNodePort: "30003" tunnelNodePort: "30004" edgeWatcher: nodeSelector: "node-role.kubernetes.io/worker": "" tolerations: [] edgeWatcherAgent: nodeSelector: "node-role.kubernetes.io/worker": "" tolerations: []
3、 使用配置文件创建集群
安装前置包(在所有节点上操作)
yum install -y conntrack
然后执行如下命令:
./kk create cluster -f config-sample.yaml (Continue this installation? [yes/no]: yes ) #就会自动安装了。 #剩下就是15分钟的等待
4、查看进度
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='.items[0].metadata.name') -f
Collecting installation results ... ##################################################### ### Welcome to KubeSphere! ### ##################################################### Console: http://192.168.0.223: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 2022-04-08 21:25:49 #####################################################
到这里就代表安装行了
5、访问KubeSphere
节点IP:30880
用户:root
初始密码:P@88w0rd之后设置新的密码,然后就进入KubeSphere的主界面了:
以上是关于Linux多节点使用KubeKey部署KubeSphere的主要内容,如果未能解决你的问题,请参考以下文章
使用 KubeKey 快速离线部署 K8s 与 KubeSphere