一、admin/rancher部署:
1、admin:部署简单,使用复杂,因为控制器这些都是容器,后期修改复杂。
证书有效期默认是1年,需要admin改源码。
2、rancher:国内用的不多,可以使用kubesphere。
弊端:
使用复杂,API Server等都是容器化安装,很多功能缺失,需要后期手动去配,装插件、打镜像等。
二、KubeSphere:
KubeSphere 为用户提供轻量级安装程序 KubeKey(该程序支持安装 Kubernetes、KubeSphere 及相关插件),安装过程简单而友好。KubeKey 不仅能帮助用户在线创建集群,还能作为离线安装解决方案。
以下是可用的安装选项:
1、All-in-One:在单个节点上安装 KubeSphere(仅为让用户快速熟悉 KubeSphere)。
2、多节点安装:在多个节点上安装 KubeSphere(用于测试或开发)。
3、在 Linux 上离线安装:将 KubeSphere 的所有镜像打包(便于在 Linux 上进行离线安装)。
4、高可用安装:安装具有多个节点的高可用 KubeSphere 集群,该集群用于生产环境。
5、最小化安装:仅安装 KubeSphere 所需的最少系统组件。以下是最低资源要求:
2 个 CPU
4 GB 运行内存
40 GB 存储空间
6、全家桶安装:安装 KubeSphere 的所有可用系统组件,例如 DevOps、服务网格、告警等。
1、KubeKey:
替代了以前使用的基于 ansible 的安装程序。
KubeKey 的几种使用场景:
-仅安装 Kubernetes;
-使用一个命令同时安装 Kubernetes 和 KubeSphere;
-扩缩集群;
-升级集群;
-安装 Kubernetes 相关的插件(Chart 或 YAML)。
2、多节点安装:
①下载KubeKey:
//可以访问GitHub的情况下,直接下载:
curl -sfL https://get-kk.kubesphere.io | VERSION=v2.0.0 sh -
//访问受限的情况下:
export KKZONE=cn //先执行命令以确保您从正确的区域下载 KubeKey
curl -sfL https://get-kk.kubesphere.io | VERSION=v2.0.0 sh - //执行命令下载
PS:
1、可以通过修改VERSION后的值来修改下载的版本号;
2、下载 KubeKey 后,如果您将其传输至访问 Googleapis 同样受限的新机器,请您在执行以下步骤之前务必再次执行 export KKZONE=cn 命令。
实例:
②为kk文件添加执行权限:
chmod +x kk //chmod命令添加权限,r:读 w:写 x:执行
实例:
③创建集群:
对于多节点安装,需要通过指定配置文件来创建集群。
1、创建配置文件:
//创建配置文件
./kk create config [--with-kubernetes version] [--with-kubesphere version] [(-f | --file) path]
//实例:
./kk create config --with-kubernetes v1.18.6 --with-kubesphere v3.1.1 -f ~/lrz/test.yaml
PS:
1、安装 KubeSphere 3.2.1 的建议 Kubernetes 版本:v1.19.x、v1.20.x、v1.21.x 或 v1.22.x(实验性支持)。如果不指定 Kubernetes 版本,KubeKey 将默认安装 Kubernetes v1.21.5。
2、如果在此步骤的命令中不添加标志 --with-kubesphere,则不会部署 KubeSphere,只能使用配置文件中的 addons 字段安装,或者在您后续使用 ./kk create cluster 命令时再次添加这个标志。
3、如果添加标志 --with-kubesphere 时不指定 KubeSphere 版本,则会安装最新版本的 KubeSphere。
2、编辑配置文件:
不更改名称,那么将创建默认文件 config-sample.yaml。
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
name: sample
//配置master和node信息
//name:实例的主机名。
//address:任务机和其他实例通过 SSH 相互连接所使用的 IP 地址。根据您的环境,可以是公有 IP 地址或私有 IP 地址。例如,一些云平台为每个实例提供一个公有 IP 地址,用于通过 SSH 访问。在这种情况下,您可以在该字段填入这个公有 IP 地址。
//internalAddress:实例的私有 IP 地址。
spec:
hosts:
- {name: master, address: 192.168.142.128, internalAddress: 192.168.142.128, user: root, password: "123456"}
- {name: node1, address: 192.168.142.130, internalAddress: 192.168.142.130, user: root, password: "123456"}
- {name: node2, address: 192.168.142.140, internalAddress: 192.168.142.140, user: root, password: "123456"}
roleGroups:
etcd: //etcd节点名称
- master
control-plane: //主节点名称
- master
worker: //工作节点名称
- node1
- node2
//高可用安装
controlPlaneEndpoint:
## Internal loadbalancer for apiservers
# internalLoadbalancer: haproxy //内置负载均衡器,取消注释即可使用
domain: lb.kubesphere.local //默认内部访问域名
address: "" //缩进2空格,填写公共IP(例如阿里云SLB)或者私有IP
port: 6443 //缩进2空格
kubernetes:
version: v1.18.6 //K8S版本
imageRepo: kubesphere //下载镜像的仓库
clusterName: cluster.local //集群名称
masqueradeAll: false //使用纯 iptables 代理模式,masqueradeAll 即让 kube-proxy 对所有流量进行源地址转换 (SNAT)。它默认值为 false
maxPods: 110 //Kubelet 可运行 Pod 的最大数量,默认值为 110
nodeCidrMaskSize: 24 //集群中节点 CIDR 的掩码大小,默认值为 24
proxyMode: ipvs //使用的代理模式,默认为 ipvs
network:
plugin: calico //CNI插件。KubeKey默认安装Calico,也可以指定为Flannel。只有使用Calico作为CNI插件时,才能使用某些功能,例如 Pod IP 池
kubePodsCIDR: 10.233.64.0/18 //Kubernetes Pod 子网的有效 CIDR 块。CIDR 块不应与您的节点子网和 Kubernetes 服务子网重叠
kubeServiceCIDR: 10.233.0.0/18 //Kubernetes 服务的有效 CIDR 块
## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
multusCNI:
enabled: false
registry:
plainHTTP: false
privateRegistry: "" //配置私有镜像仓库,用于离线安装(例如,Docker 本地仓库或 Harbor)
namespaceOverride: ""
registryMirrors: [] //配置 Docker 仓库镜像以加速下载
insecureRegistries: [] //设置不安全镜像仓库的地址
addons: [] //指定存储,从而自定义持久化存储插件
PS:
1、端口 22 是 SSH 的默认端口,因此无需将它添加至该 YAML 文件中。否则,您需要在 IP 地址后添加对应端口号,如下所示。
hosts:
- {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, port: 8022, user: ubuntu, password: Testing123}
2、用户默认root可以删除user。
3、使用 SSH 密钥的无密码登录示例:
hosts:
- {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, privateKeyPath: "~/.ssh/id_rsa"}
4、在安装前,请确保端口 6443 没有被其他服务占用,否则在安装时会产生冲突(6443 为 API 服务器的默认端口)。
3、使用配置文件创建集群:
./kk create cluster -f config-sample.yaml //整个安装过程可能需要 10 到 20 分钟
PS:
依赖conntrack,用yum源安装即可。
下图为安装过程:
4、验证安装:
安装完可以看到如下内容:
#####################################################
### Welcome to KubeSphere! ###
#####################################################
Console: http://192.168.142.128:30880
Account: admin
Password: P@88w0rd
NOTES:
1. After you log into the console, please check the
monitoring status of service components in
the "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 20xx-xx-xx xx:xx:xx
#####################################################
然后就可以通过<NODEIP:30880>使用默认账户密码(admin/P@88w0rd)访问控制台。
5、启用kubectl补全:
KubeKey 不会启用 kubectl 自动补全功能,请确保已安装 bash-autocompletion 并可以正常工作。
yum -y install bash-completion
echo 'source <(kubectl completion bash)' >>~/.bashrc
kubectl completion bash >/etc/bash_completion.d/kubectl