使用kk在centos7上离线部署kubespherev3.0.0详解
环境准备
以三台centos 7.7 64bit 为例:
确保所有机器已经安装所需依赖软件(sudo curl openssl ebtables socat ipset conntrack docker),离线环境下可使用私有源或者rpm包(centos类OS)或deb包(debian类OS)安装。
具体环境要求参见:https://github.com/kubesphere/kubekey/tree/release-1.0#requirements-and-recommendatio
建议:可将安装了所有依赖软件的操作系统制作成系统镜像使用,避免每台机器都安装依赖软件,即可提升交付部署效率,又可避免依赖问题的发生。
如已有k8s集群,可将kubesphere相关镜像导入仓库之后使用ks-installer部署: https://github.com/kubesphere/ks-installer/tree/release-3.0
镜像仓库
可使用harbor或其他第三方镜像仓库。
如需快速部署自签名镜像仓库可参考:https://kubesphere.com.cn/forum/d/2240-docker-registry
安装包下载:
提示:由于包含所有组件镜像,该压缩包较大,如果网络不佳,可能会导致下载耗时较长。也可根据文档中的镜像列表将相关镜像导入私有镜像仓库中后使用kubekey自行安装。
# md5: 65e9a1158a682412faa1166c0cf06772 curl -Ok https://kubesphere-installer.pek3b.qingstor.com/offline/v3.0.0/kubesphere-all-v3.0.0-offline-linux-amd64.tar.gz
安装步骤:
创建集群配置文件
安装包解压后进入kubesphere-all-v3.0.0-offline-linux-amd64
./kk create config --with-kubesphere v3.0.0
修改生成的配置文件config-sample.yaml,也可使用-f参数自定义配置文件路径。kk详细用法可参考:https://github.com/kubesphere/kubekey
注意填写正确的私有仓库地址privateRegistry(如已准备好私有仓库可设置为已有仓库地址,若计划使用kubekey创建私有仓库,则该参数设置为:dockerhub.kubekey.local)
apiVersion: kubekey.kubesphere.io/v1alpha1 kind: Cluster metadata: name: sample spec: hosts: - {name: node1, address: 192.168.6.17, internalAddress: 192.168.6.17, password: Qcloud@123} - {name: node2, address: 192.168.6.18, internalAddress: 192.168.6.18, password: Qcloud@123} - {name: node3, address: 192.168.6.19, internalAddress: 192.168.6.19, password: Qcloud@123} roleGroups: etcd: - node1 master: - node1 worker: - node1 - node2 - node3 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: [] privateRegistry: dockerhub.kubekey.local addons: [] --- apiVersion: installer.kubesphere.io/v1alpha1 kind: ClusterConfiguration metadata: name: ks-installer namespace: kubesphere-system labels: version: v3.0.0 spec: local_registry: "" 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: false # 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创建自签名镜像仓库,则会在当前机器启动docker registry服务,请确保当前机器存在registry:2,如没有,可从kubesphere-images-v3.0.0/registry.tar中导入,导入命令:docker load < registry.tar
注意:由kk启动的镜像仓库端口为443,请确保所有机器均可访问当前机器443端口。镜像数据存储到本地/mnt/registry (建议单独挂盘)。
dependencies目录中仅提供了ubuntu16.04 (ubuntu-16.04-amd64-debs.tar.gz)、ubuntu18.04 (ubuntu-18.04-amd64-debs.tar.gz)以及centos7 (centos-7-amd64-rpms.tar.gz)的相关依赖包,其它操作系统可自行制作rpm或deb依赖包。打包规则为 ${releaseID}-${versionID}-${osArch}-${debs or rpms}.tar.gz
./kk init os -f config-sample.yaml -s ./dependencies/
如需使用kk创建自签名镜像仓库,可执行如下命令:
./kk init os -f config-sample.yaml -s ./dependencies/ --add-images-repo
导入镜像
进入kubesphere-all-v3.0.0-offline-linux-amd64/kubesphere-images-v3.0.0
使用push-images.sh将镜像导入之前准备的仓库中:
脚本后镜像仓库地址请填写真实仓库地址
./push-images.sh dockerhub.kubekey.local
如需自行到入镜像,可参考如下方法:
以kubesphere/kube-apiserver:v1.17.9为例
docker tag kubesphere/kube-apiserver:v1.17.9 dockerhub.kubesphere.local/kubesphere/kube-apiserver:v1.17.9
注意: retag镜像时需要保留原始镜像的namespace
部署
以上准备工作完成且再次检查配置文件无误后,执行安装。
执行安装
./kk create cluster -f config-sample.yaml