KubeKey 是新一代 Kubernetes 和 KubeSphere 安装器,可帮助您以简单、快速、灵活的方式安装 Kubernetes 和 KubeSphere。
export KKZONE=cn curl -sfL https://get-kk.kubesphere.io | VERSION=v1.0.1 sh - 准备镜像如果您想让安装加快或者您的机房没有外网,可以使用公司内部的私有仓库,预先把镜像推送到私有仓库中,我这里的仓库使用harbor
下载离线安装工具,我这里只是用这个脚本来下载和推送镜像
拉取镜像
./offline-installation-tool.sh -s -l images-list.txt -d ./kubesphere-images 在./kubesphere-images目录下能看到以下压缩包 # ll total 8606088 -rw-r--r-- 1 root root 454465957 Feb 2 15:37 csi-images.tar.gz -rw-r--r-- 1 root root 1231853258 Feb 2 15:33 example-images.tar.gz -rw-r--r-- 1 root root 445244294 Feb 2 14:50 istio-images.tar.gz -rw-r--r-- 1 root root 762326634 Feb 2 14:27 k8s-images.tar.gz -rw-r--r-- 1 root root 1297767607 Feb 2 14:40 ks-core-images.tar.gz -rw-r--r-- 1 root root 3439146357 Feb 2 15:19 ks-devops-images.tar.gz -rw-r--r-- 1 root root 733165078 Feb 2 14:46 ks-logging-images.tar.gz -rw-r--r-- 1 root root 448651153 Feb 2 15:23 openpitrix-images.tar.gz推送镜像到私有仓库,待脚本完成即可
./offline-installation-tool.sh -l images-list.txt -d ./kubesphere-images -r hub.evbj.easou.com 创建多节点集群您可用使用 KubeKey 同时安装 Kubernetes 和 KubeSphere,通过自定义配置文件中的参数创建多节点集群。
创建安装有 KubeSphere 的 Kubernetes 集群(例如 --with-kubesphere v3.0.0)
系统将创建默认的 config-sample.yaml 文件。您可以根据您的环境修改此文件。
apiVersion: kubekey.kubesphere.io/v1alpha1 kind: Cluster metadata: name: ESCloud spec: hosts: - {name: kubesphere001, address: 10.26.31.34, internalAddress: 10.26.31.34, privateKeyPath: "~/.ssh/id_dsa", port: 20755} - {name: kubesphere002, address: 10.26.31.36, internalAddress: 10.26.31.36, privateKeyPath: "~/.ssh/id_dsa", port: 20755} - {name: kubesphere003, address: 10.26.31.42, internalAddress: 10.26.31.42, privateKeyPath: "~/.ssh/id_dsa", port: 20755} - {name: kubesphere004, address: 10.26.31.46, internalAddress: 10.26.31.46, privateKeyPath: "~/.ssh/id_dsa", port: 20755} - {name: kubesphere005, address: 10.26.31.118, internalAddress: 10.26.31.118, privateKeyPath: "~/.ssh/id_dsa", port: 20755} - {name: kubesphere006, address: 10.26.31.119, internalAddress: 10.26.31.119, privateKeyPath: "~/.ssh/id_dsa", port: 20755} - {name: kubesphere007, address: 10.26.31.120, internalAddress: 10.26.31.120, privateKeyPath: "~/.ssh/id_dsa", port: 20755} - {name: kubesphere008, address: 10.26.31.121, internalAddress: 10.26.31.121, privateKeyPath: "~/.ssh/id_dsa", port: 20755} roleGroups: etcd: - kubesphere001 - kubesphere002 - kubesphere003 master: - kubesphere001 - kubesphere002 - kubesphere003 worker: - kubesphere004 - kubesphere005 - kubesphere006 - kubesphere007 - kubesphere008 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: ["hub.kubeops.net"] privateRegistry: "hub.kubeops.net" addons: [] --- apiVersion: installer.kubesphere.io/v1alpha1 kind: ClusterConfiguration metadata: name: ks-installer namespace: kubesphere-system labels: version: v3.0.0 spec: local_registry: "hub.kubeops.net" persistence: storageClass: "" authentication: jwtSecret: "" etcd: monitoring: true endpointIps: localhost port: 2379 tlsEnable: true common: es: elasticsearchDataVolumeSize: 20Gi elasticsearchMasterVolumeSize: 4Gi elkPrefix: logstash logMaxAge: 7 mysqlVolumeSize: 20Gi minioVolumeSize: 20Gi etcdVolumeSize: 20Gi openldapVolumeSize: 2Gi redisVolumSize: 2Gi console: enableMultiLogin: true # enable/disable multi login port: 30880 alerting: enabled: false auditing: enabled: false devops: enabled: false jenkinsMemoryLim: 2Gi jenkinsMemoryReq: 1500Mi jenkinsVolumeSize: 8Gi jenkinsJavaOpts_Xms: 512m jenkinsJavaOpts_Xmx: 512m jenkinsJavaOpts_MaxRAM: 2g events: enabled: false ruler: enabled: true replicas: 2 logging: enabled: false logsidecarReplicas: 2 metrics_server: enabled: true monitoring: prometheusMemoryRequest: 400Mi prometheusVolumeSize: 20Gi multicluster: clusterRole: none # host | member | none networkpolicy: enabled: false notification: enabled: false openpitrix: enabled: false servicemesh: enabled: false 环境初始化 ./kk init os -f config-sample.yaml INFO[14:04:19 CST] Init operating system INFO[14:04:20 CST] Start initializing kubesphere008 [10.26.31.121] node=10.26.31.121 INFO[14:04:20 CST] Start initializing kubesphere001 [10.26.31.34] node=10.26.31.34 INFO[14:04:20 CST] Start initializing kubesphere003 [10.26.31.42] node=10.26.31.42 INFO[14:04:20 CST] Start initializing kubesphere005 [10.26.31.118] node=10.26.31.118 INFO[14:04:20 CST] Start initializing kubesphere006 [10.26.31.119] node=10.26.31.119 INFO[14:04:20 CST] Start initializing kubesphere004 [10.26.31.46] node=10.26.31.46 INFO[14:04:20 CST] Start initializing kubesphere007 [10.26.31.120] node=10.26.31.120 INFO[14:04:20 CST] Start initializing kubesphere002 [10.26.31.36] node=10.26.31.36 INFO[14:06:34 CST] Complete initialization kubesphere005 [10.26.31.118] node=10.26.31.118 INFO[14:06:56 CST] Complete initialization kubesphere002 [10.26.31.36] node=10.26.31.36 INFO[14:07:04 CST] Complete initialization kubesphere006 [10.26.31.119] node=10.26.31.119 INFO[14:07:04 CST] Complete initialization kubesphere007 [10.26.31.120] node=10.26.31.120 INFO[14:07:07 CST] Complete initialization kubesphere003 [10.26.31.42] node=10.26.31.42 INFO[14:07:11 CST] Complete initialization kubesphere004 [10.26.31.46] node=10.26.31.46 INFO[14:08:23 CST] Complete initialization kubesphere001 [10.26.31.34] node=10.26.31.34 INFO[14:10:57 CST] Complete initialization kubesphere008 [10.26.31.121] node=10.26.31.121 INFO[14:10:57 CST] Init operating system successful. 部署