概述
官方网站:KubeKey (kubesphere.com.cn)
KubeKey(由 Go 语言开发)是一种全新的装置工具,代替了以前应用的基于 ansible 的安装程序。KubeKey 为您提供灵便的装置抉择,您能够仅装置 Kubernetes,也能够同时装置 Kubernetes 和 KubeSphere。
KubeSphere 是 GitHub 上的一个开源我的项目,是成千上万名社区用户的聚集地。很多用户都在应用 KubeSphere 运行工作负载。对于在 Linux 上的装置,KubeSphere 既能够部署在云端,也能够部署在本地环境中,例如 AWS EC2、Azure VM 和裸机等。
KubeKey 的几种应用场景:
- 仅装置 Kubernetes;
- 应用一个命令同时装置 Kubernetes 和 KubeSphere;
- 扩缩集群;
- 降级集群;
- 装置 Kubernetes 相干的插件(Chart 或 YAML)。
咱们利用其装置 Kubernetes
装置步骤
下载 KubeKey
运行以下命令,以确保您从正确的区域下载 KubeKey。
export KKZONE=cn
运行以下命令来下载 KubeKey:
curl -sfL https://get-kk.kubesphere.io | VERSION=v2.2.2 sh -
KubeKey 的最新版本 (v2.2.2),能够更改命令中的版本号来下载特定的版本
筹备 Linux 主机
零碎要求
零碎 | 最低要求(每个节点) |
---|---|
Ubuntu 16.04,18.04,20.04,22.04 | CPU:2 核,内存:4 G,硬盘:40 G |
Debian Buster,Stretch | CPU:2 核,内存:4 G,硬盘:40 G |
CentOS 7.x | CPU:2 核,内存:4 G,硬盘:40 G |
Red Hat Enterprise Linux 7 | CPU:2 核,内存:4 G,硬盘:40 G |
SUSE Linux Enterprise Server 15 /openSUSE Leap 15.2 | CPU:2 核,内存:4 G,硬盘:40 G |
节点要求
- 所有节点必须都能通过 SSH 拜访。
- 所有节点工夫同步。
- 所有节点都应应用 sudo/curl/openssl/tar。
容器运行时
KubeKey 会默认装置最新版本的 Docker。或者,也能够在创立集群前手动装置 Docker 或其余容器运行时。
反对的容器运行时 | 版本 |
---|---|
Docker | 19.3.8+ |
containerd | 最新版 |
CRI-O(试验版,未经充沛测试) | 最新版 |
iSula(试验版,未经充沛测试) | 最新版 |
依赖项要求
KubeKey 能够一起装置 Kubernetes 和 KubeSphere。依据要装置的 Kubernetes 版本,须要装置的依赖项可能会不同。
依赖项 | Kubernetes 版本 ≥ 1.18 | Kubernetes 版本 < 1.18 |
---|---|---|
socat | 必须 | 可选,但倡议装置 |
conntrack | 必须 | 可选,但倡议装置 |
ebtables | 可选,但倡议装置 | 可选,但倡议装置 |
ipset | 可选,但倡议装置 | 可选,但倡议装置 |
网络和 DNS 要求
- 确保 /etc/resolv.conf 中的 DNS 地址可用,否则,可能会导致集群中的 DNS 呈现问题。
- 敞开防火墙规定或平安组。
- 反对的 CNI 插件:Calico 和 Flannel。
KubeKey 所有受反对的 Kubernetes 版本
运行 ./kk version --show-supported-k8s
,查看能应用 KubeKey 装置的所有受反对的 Kubernetes 版本
[email protected]:~# ./kk version --show-supported-k8s。。。v1.21.2
v1.21.3
v1.21.4
v1.21.5
v1.21.6
v1.21.7
v1.21.8
v1.21.9
v1.21.10
v1.21.11
v1.21.12
v1.21.13
v1.22.0
v1.22.1
v1.22.2
v1.22.3
v1.22.4
v1.22.5
v1.22.6
v1.22.7
v1.22.8
v1.22.9
v1.22.10
v1.23.0
v1.23.1
v1.23.2
v1.23.3
v1.23.4
v1.23.5
v1.23.6
v1.23.7
v1.23.8
v1.24.0
v1.24.1
能够看到,还不反对最新的 1.25 版本。
然而,若需应用 KubeKey 来装置 Kubernetes 和 KubeSphere 3.3.0,请参见下表以查看所有受反对的 Kubernetes 版本。
KubeSphere 版本 | 受反对的 Kubernetes 版本 |
---|---|
v3.3.0 | v1.19.x、v1.20.x、v1.21.x、v1.22.x、v1.23.x(实验性反对) |
创立 Cluster 配置文件并批改
./kk create config -f config-sample.yaml
[email protected]:/home/zyi#./kk create config -f config-sample.yaml
[email protected]:/home/zyi# vim config-sample.yaml
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
name: test-cluster
spec:
hosts:
- {name: cp4, address: 172.16.10.10, internalAddress: 172.16.10.10, password: "cisco123"}
- {name: worker41, address: 172.16.10.11, internalAddress: 172.16.10.11, password: "cisco123"}
roleGroups:
etcd:
- cp4
control-plane:
- cp4
worker:
- cp4
- worker41
controlPlaneEndpoint:
## Internal loadbalancer for apiservers
# internalLoadbalancer: haproxy
domain: lb.kubesphere.local
address: ""
port: 6443
kubernetes:
version: v1.24.1
clusterName: cluster24.smartx.lab
autoRenewCerts: true
containerManager: containerd
etcd:
type: kubekey
network:
plugin: calico
kubePodsCIDR: 10.244.64.0/18
kubeServiceCIDR: 10.244.0.0/18
## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
multusCNI:
enabled: false
registry:
privateRegistry: ""namespaceOverride:""
registryMirrors: []
insecureRegistries: []
addons: []
以上配置应用:
- 两节点 cp4/worker41;
- Runtime-Containerd
- Kubernetes 1.24.1
-
CNI-Calico
运行 kk 创立集群
./kk create config -f config-sample.yaml
[email protected]:/home/zyi# export KKZONE=cn [email protected]:/home/zyi# ./kk create cluster -f config-sample.yaml _ __ _ _ __ | | / / | | | | / / | |/ / _ _| |__ ___| |/ / ___ _ _ | \| | | | '_ \ / _ \ \ / _ \ | | | | |\ \ |_| | |_) | __/ |\ \ __/ |_| | \_| \_/\__,_|_.__/ \___\_| \_/\___|\__, | __/ | |___/ 12:16:04 UTC [GreetingsModule] Greetings 12:16:05 UTC message: [worker41] Greetings, KubeKey! 12:16:05 UTC message: [cp4] Greetings, KubeKey! 12:16:05 UTC success: [worker41] 12:16:05 UTC success: [cp4] 12:16:05 UTC [NodePreCheckModule] A pre-check on nodes 12:16:05 UTC success: [worker41] 12:16:05 UTC success: [cp4] 12:16:05 UTC [ConfirmModule] Display confirmation form... Continue this installation? [yes/no]: yes 12:16:08 UTC success: [LocalHost] 12:16:08 UTC [NodeBinariesModule] Download installation binaries 12:16:08 UTC message: [localhost] downloading amd64 kubeadm v1.24.1 ... 12:16:08 UTC message: [localhost] kubeadm is existed 12:16:08 UTC message: [localhost] downloading amd64 kubelet v1.24.1 ... 12:16:09 UTC message: [localhost] kubelet is existed 12:16:09 UTC message: [localhost] downloading amd64 kubectl v1.24.1 ... 12:16:09 UTC message: [localhost] kubectl is existed 12:16:09 UTC message: [localhost] downloading amd64 helm v3.6.3 ... ... Please check the result using the command: kubectl get pod -A
在 Master 下面查看集群状况
[email protected]:/home/zyi# kubectl get node
NAME STATUS ROLES AGE VERSION
cp4 NotReady control-plane,worker 44s v1.24.1
worker41 NotReady worker 8s v1.24.1
[email protected]:/home/zyi# kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-f9f9bbcc9-b2xxx 1/1 Running 0 22s
kube-system calico-node-mcbpn 1/1 Running 0 22s
kube-system calico-node-zbm8p 1/1 Running 0 22s
kube-system coredns-f657fccfd-6tnvr 1/1 Running 0 43s
kube-system coredns-f657fccfd-rqwsm 1/1 Running 0 43s
kube-system kube-apiserver-cp4 1/1 Running 0 58s
kube-system kube-controller-manager-cp4 1/1 Running 0 57s
kube-system kube-proxy-2q4p9 1/1 Running 0 23s
kube-system kube-proxy-ml5sx 1/1 Running 0 43s
kube-system kube-scheduler-cp4 1/1 Running 0 56s
kube-system nodelocaldns-4srdw 1/1 Running 0 23s
kube-system nodelocaldns-fd9gx 1/1 Running 0 43s