单节点服务器-部署
步骤 1:准备 Linux 机器
若要以 All-in-One 模式进行安装,您仅需参考以下对机器硬件和操作系统的要求准备一台主机。
依赖项要求
KubeKey 可以将 Kubernetes 和 KubeSphere 一同安装。针对不同的 Kubernetes 版本,需要安装的依赖项可能有所不同。您可以参考以下列表,查看是否需要提前在节点上安装相关的依赖项
安装依赖包
yum install -y socat conntrack ebtables ipset
步骤 2:下载 KubeKey
KubeKey 是用 Go 语言开发的一款全新的安装工具,代替了以前基于 ansible 的安装程序。KubeKey 为用户提供了灵活的安装选择,可以分别安装 KubeSphere 和 Kubernetes 或二者同时安装,既方便又高效
网络和 DNS 要求
- 请确保
/etc/resolv.conf
中的 DNS 地址可用,否则,可能会导致集群中的 DNS 出现问题。 - 如果您的网络配置使用防火墙规则或安全组,请务必确保基础设施组件可以通过特定端口相互通信。建议您关闭防火墙。有关更多信息,请参见端口要求。
- 支持的 CNI 插件:Calico 和 Flannel。其他插件也适用(例如 Cilium 和 Kube-OVN 等),但请注意它们未经充分测试
提示
- 建议您的操作系统处于干净状态(不安装任何其他软件),否则可能会发生冲突。
- 如果您无法从
dockerhub.io
下载容器镜像,建议提前准备仓库的镜像地址(即加速器)。有关更多信息,请参见为安装配置加速器
1、如果您访问 GitHub/Googleapis 受限
先执行以下命令以确保您从正确的区域下载 KubeKey
export KKZONE=cn
执行以下命令下载 KubeKey
# 执行以下命令会下载最新版 KubeKey (v1.1.0),您可以修改命令中的版本号下载指定版本
curl -sfL https://get-kk.kubesphere.io | VERSION=v1.1.0 sh -
提示
在您下载 KubeKey 后,如果您将其传至新的机器,且访问 Googleapis 同样受限,在您执行以下步骤之前请务必再次执行 export KKZONE=cn 命令
# 为 kk 添加可执行权限
chmod +x kk
步骤 3:开始安装
# 在本快速入门教程中,您只需执行一个命令即可进行安装,其模板如下所示
./kk create cluster [--with-kubernetes version] [--with-kubesphere version]
# 若要同时安装 Kubernetes 和 KubeSphere,可参考以下示例命令
./kk create cluster --with-kubernetes v1.20.4 --with-kubesphere v3.1.0
提示
执行该命令后,KubeKey 将检查您的安装环境,结果显示在一张表格中。有关详细信息,请参见节点要求和依赖项要求。输入 yes
继续安装流程
步骤 4:验证安装结果
输入以下命令以检查安装结果
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
输出信息会显示 Web 控制台的 IP 地址和端口号,默认的 NodePort 是 30880。现在,您可以使用默认的帐户和密码 (admin/P@88w0rd) 通过 :30880 访问控制台
提示
您可能需要配置端口转发规则并在安全组中开放端口,以便外部用户访问控制台
登录至控制台后,您可以在服务组件中查看各个组件的状态。如果要使用相关服务,您可能需要等待部分组件启动并运行。您也可以使用 kubectl get pod –all-namespaces 来检查 KubeSphere 相关组件的运行状况
多节点服务器-部署
步骤 1:分配主机IP
本示例包括以下三台主机,其中主节点充当任务机。
主机 IP 主机名 角色
172.23.142.233 master master, etcd
172.23.142.234 node1 worker
172.23.142.235 node2 worker
步骤 2:下载 KubeKey
请按照以下步骤下载 KubeKey。
- 如果您访问 GitHub/Googleapis 受限
先执行以下命令以确保您从正确的区域下载 KubeKey。
export KKZONE=cn
执行以下命令下载 KubeKey
1)curl -sfL https://get-kk.kubesphere.io | VERSION=v1.1.1 sh -
# 或者
2)wget -c https://github.com/kubesphere/kubekey/releases/download/v1.1.1/kubekey-v1.1.1-linux-amd64.tar.gz -O - | tar -zxf
备注-1:下载 KubeKey 后,如果您将其传输至访问 Googleapis 同样受限的新机器,请您在执行以下步骤之前务必再次执行 export KKZONE=cn 命令。
备注-2:执行以上命令会下载最新版 KubeKey (v1.1.1),您可以修改命令中的版本号下载指定版本。
为 kk 添加可执行权限:
chmod +x kk
步骤 2:创建集群
对于多节点安装,需要通过指定配置文件来创建集群
1. 创建示例配置文件
# 命令如下:
./kk create config [--with-kubernetes version] [--with-kubesphere version] [(-f | --file) path]
# 比如
./kk create config --with-kubernetes v1.20.4 --with-kubesphere v3.1.0
以下是一些示例,供您参考
您可以使用默认配置创建示例配置文件,也可以为该文件指定其他文件名或其他文件夹
./kk create config [-f ~/myfolder/abc.yaml]
您可以指定要安装的 KubeSphere 版本(例如 –with-kubesphere v3.1.0)
./kk create config --with-kubesphere [version]
2. 编辑配置文件
如果您不更改名称,那么将创建默认文件 config-sample.yaml。编辑文件,以下是多节点集群(具有一个主节点)配置文件的示例
备注:若要自定义 Kubernetes 相关参数,请参考 Kubernetes 集群配置
spec:
hosts:
- {name: master, address: 172.23.142.233, internalAddress: 172.23.142.233, user: ubuntu, password: Testing123}
- {name: node1, address: 172.23.142.234, internalAddress: 172.23.142.234, user: ubuntu, password: Testing123}
- {name: node2, address: 172.23.142.235, internalAddress: 172.23.142.235, user: ubuntu, password: Testing123}
roleGroups:
etcd:
- master # master service
master:
- master
worker:
- node1 # node1 service
- node2 # node2 service
controlPlaneEndpoint:
domain: lb.kubesphere.local
address: ""
port: "6443"
主机
请参照上方示例在 hosts 下列出您的所有机器并添加详细信息。
name:实例的主机名。
address:任务机和其他实例通过 SSH 相互连接所使用的 IP 地址。根据您的环境,可以是公有 IP 地址或私有 IP 地址。例如,一些云平台为每个实例提供一个公有 IP 地址,用于通过 SSH 访问。在这种情况下,您可以在该字段填入这个公有 IP 地址。
internalAddress:实例的私有 IP 地址。
此外,您必须提供用于连接至每台实例的登录信息,以下示例供您参考:
1)使用密码登录示例:
hosts:
- {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, port: 8022, user: ubuntu, password: Testing123}
备注:在本教程中,端口 22 是 SSH 的默认端口,因此您无需将它添加至该 YAML 文件中。否则,您需要在 IP 地址后添加对应端口号,如上所示
2)默认 root 用户示例:
hosts:
- {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, password: Testing123}
3)使用 SSH 密钥的无密码登录示例
hosts:
- {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, privateKeyPath: "~/.ssh/id_rsa"}
4)在 ARM 设备上安装的示例:
hosts:
- {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, user: ubuntu, password: Testing123, arch: arm64}
提示:
在安装 KubeSphere 之前,您可以使用 hosts 下提供的信息(例如 IP 地址和密码)通过 SSH 的方式测试任务机和其他实例之间的网络连接。
在安装前,请确保端口 6443 没有被其他服务占用,否则在安装时会产生冲突(6443 为 API 服务器的默认端口)
使用配置文件创建集群
./kk create cluster -f config-sample.yaml
备注:如果使用其他名称,则需要将上面的 config-sample.yaml 更改为您自己的文件
整个安装过程可能需要 10 到 20 分钟,具体取决于您的计算机和网络环境
验证安装
安装完成后,您会看到如下内容:
#####################################################
### Welcome to KubeSphere! ###
#####################################################
Console: http://IP地址:30880
Account: admin
Password: P@88w0rd
NOTES:
1. After logging 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 ready.
2. Please modify the default password after login.
#####################################################
https://kubesphere.io 20xx-xx-xx xx:xx:xx
#####################################################
现在您可以通过 <NodeIP:30880 使用默认帐户和密码 (admin/P@88w0rd) 访问 KubeSphere 的 Web 控制台
备注:若要访问控制台,您可能需要根据您的环境配置端口转发规则。还请确保在您的安全组中打开了端口 30880
启用 kubectl 自动补全
KubeKey 不会启用 kubectl 自动补全功能,请参见以下内容并将其打开
请确保已安装 bash-autocompletion 并可以正常工作
# Install bash-completion
yum install bash-completion -y
# Source the completion script in your ~/.bashrc file
echo 'source <(kubectl completion bash)' >>~/.bashrc
# Add the completion script to the /etc/bash_completion.d directory
kubectl completion bash >/etc/bash_completion.d/kubectl