概念
多节点集群由至少一个主节点和一个工作节点组成。您可以使用任何节点作为任务机来执行安装任务,也可以在安装之前或之后根据需要新增节点(例如,为了实现高可用性)。
- Control plane node:主节点,通常托管控制平面,控制和管理整个系统。
- Worker node:工作节点,运行部署在工作节点上的实际应用程序。
本次采用一个Master节点,两个Worker节点的模式安装Kubesphere
Linux 主机
系统要求
系统 | 最低要求(每个节点) |
---|---|
Ubuntu 16.04,18.04,20.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 |
我使用的是三台 CentOS 7.9(CentOS-7-x86_64-Minimal-2009.iso)的主机,各4核+8G+50G
三台主机需要能够互相访问
主机 IP | 主机名 | 角色 |
---|---|---|
192.168.1.220 | Master | control plane, etcd |
192.168.1.221 | Worker1 | worker |
192.168.1.222 | Worker2 | worker |
准备工作
1.用xshell连接三台linux主机
开启 发送键输入到 所有会话
因为接下来的操作要在三台主机上都执行,这样比较方便,当然你也可以一台一台执行。建议把三台虚拟机放在同一个窗口。必须等所有主机都执行完命令,你才能进行下一步。
2.更新软件包
yum update -y
3.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
4.关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
getenforce # 查看Selinux状态
5.关闭swap
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
swapoff -a # 临时
5.接下来这一步是给主机起名字,要单独执行
hostnamectl set-hostname
hostnamectl set-hostname master
hostnamectl set-hostname worker1
hostnamectl set-hostname worker2
hostname # 查看主机名
7.添加hosts,根据你自己ip进行修改
cat >> /etc/hosts << EOF
192.168.1.220 master
192.168.1.221 worker1
192.168.1.222 worker2
EOF
8.时间同步
yum install ntpdate -y
ntpdate time.windows.com
9.将桥接的IPv4流量传递到iptables的链
cat >/etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system # 生效
modprobe br_netfilter && sysctl -p /etc/sysctl.d/k8s.conf
10.安装ipvs
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_connt
11.安装ipvsadm
yum -y install ipset ipvsadm
12.安装依赖组件
yum install -y wget ebtables socat ipset conntrack curl
13.安装docker
https://gitee.com/lushanyanyv/docker/blob/master/README.md
国内服务器
curl -sL https://gitee.com/lushanyanyv/docker/raw/master/docker-setup.sh | sed 's/\r$//' | bash
国外服务器
curl -sL https://gitee.com/lushanyanyv/docker/raw/master/docker-setup-abroad.sh | sed 's/\r$//' | bash
修改docker Cgroup Driver为systemd
sed -i.bak "s#^ExecStart=/usr/bin/dockerd.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --exec-opt native.cgroupdriver=systemd#g" /usr/lib/systemd/system/docker.service
systemctl daemon-reload
systemctl restart docker
正式安装
14.设置kubernates仓库
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum makecache fast
15.安装kubelet kubectl
yum install -y kubelet-1.17.9 kubectl-1.17.9
16.接下来的所有操作,在主节点进行!
下载 KubeKey
如果您能正常访问 GitHub/Googleapis
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -
如果您访问 GitHub/Googleapis 受限
export KKZONE=cn
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -
17.为 kk
添加可执行权限
chmod +x kk
18.创建集群
命令如下
./kk create config [--with-kubernetes version] [--with-kubesphere version] [(-f | --file) path]
- 安装 KubeSphere 3.3 的建议 Kubernetes 版本:v1.20.x、v1.21.x、* v1.22.x、* v1.23.x 和 * v1.24.x。带星号的版本可能出现边缘节点部分功能不可用的情况。因此,如需使用边缘节点,推荐安装 v1.21.x。如果不指定 Kubernetes 版本,KubeKey 将默认安装 Kubernetes v1.23.10。有关受支持的 Kubernetes 版本的更多信息,请参见支持矩阵。
- 如果您在此步骤的命令中不添加标志
--with-kubesphere
,则不会部署 KubeSphere,只能使用配置文件中的addons
字段安装,或者在您后续使用./kk create cluster
命令时再次添加这个标志。 - 如果您添加标志
--with-kubesphere
时不指定 KubeSphere 版本,则会安装最新版本的 KubeSphere。
以下是一些示例,供您参考:
您可以使用默认配置创建示例配置文件,也可以为该文件指定其他文件名或其他文件夹。
./kk create config [-f ~/myfolder/abc.yaml]
您可以指定要安装的 KubeSphere 版本(例如 --with-kubesphere v3.3.2
)。
./kk create config --with-kubesphere [version]
./kk create config --with-kubernetes v1.23.10 --with-kubesphere
19.编辑配置文件
如果您不更改名称,那么将创建默认文件 config-sample.yaml
。编辑文件,以下是多节点集群(具有一个主节点)配置文件的示例。
spec:
hosts:
- {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, user: ubuntu, password: Testing123}
- {name: node1, address: 192.168.0.3, internalAddress: 192.168.0.3, user: ubuntu, password: Testing123}
- {name: node2, address: 192.168.0.4, internalAddress: 192.168.0.4, user: ubuntu, password: Testing123}
roleGroups:
etcd:
- master
control-plane:
- master
worker:
- node1
- node2
controlPlaneEndpoint:
domain: lb.kubesphere.local
address: ""
port: 6443
主机
请参照上方示例在 hosts
下列出您的所有机器并添加详细信息。name
:实例的主机名。address
:任务机和其他实例通过 SSH 相互连接所使用的 IP 地址。根据您的环境,可以是公有 IP 地址或私有 IP 地址。例如,一些云平台为每个实例提供一个公有 IP 地址,用于通过 SSH 访问。在这种情况下,您可以在该字段填入这个公有 IP 地址。internalAddress
:实例的私有 IP 地址。
此外,您必须提供用于连接至每台实例的登录信息,以下示例供您参考:
使用密码登录示例:
hosts:
- {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, port: 8022, user: ubuntu, password: Testing123}
在本教程中,端口 22
是 SSH 的默认端口,因此您无需将它添加至该 YAML 文件中。否则,您需要在 IP 地址后添加对应端口号,如上所示。
默认 root 用户示例:
hosts:
- {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, password: Testing123}
使用 SSH 密钥的无密码登录示例:
hosts:
- {name: master, address: 192.168.0.2, internalAddress: 192.168.0.2, privateKeyPath: "~/.ssh/id_rsa"}
- 在安装 KubeSphere 之前,您可以使用
hosts
下提供的信息(例如 IP 地址和密码)通过 SSH 的方式测试任务机和其他实例之间的网络连接。 - 在安装前,请确保端口
6443
没有被其他服务占用,否则在安装时会产生冲突(6443
为 API 服务器的默认端口)。
roleGroups
etcd
:etcd 节点名称control-plane
:主节点名称worker
:工作节点名称
controlPlaneEndpoint(仅适用于高可用安装)
您需要在 controlPlaneEndpoint
部分为高可用集群提供外部负载均衡器信息。当且仅当您安装多个主节点时,才需要准备和配置外部负载均衡器。请注意,config-sample.yaml
中的地址和端口应缩进两个空格,address
应为您的负载均衡器地址。有关详细信息,请参见高可用配置。
addons
您可以在 config-sample.yaml
的 addons
字段下指定存储,从而自定义持久化存储插件,例如 NFS 客户端、Ceph RBD、GlusterFS 等。有关更多信息,请参见持久化存储配置。
KubeSphere 会默认安装 OpenEBS,为开发和测试环境配置 LocalPV,方便新用户使用。在本多节点安装示例中,使用了默认存储类型(本地存储卷)。对于生产环境,您可以使用 Ceph/GlusterFS/CSI 或者商业存储产品作为持久化存储解决方案。
- 您可以编辑配置文件,启用多集群功能。有关更多信息,请参见多集群管理。
- 您也可以选择要安装的组件。有关更多信息,请参见启用可插拔组件。有关完整的
config-sample.yaml
文件的示例,请参见此文件。
20.使用配置文件创建集群
./kk create cluster -f config-sample.yaml
如果使用其他名称,则需要将上面的 config-sample.yaml
更改为您自己的文件。
整个安装过程可能需要 10 到 20 分钟,具体取决于您的计算机和网络环境。
21.验证安装
安装完成后,您会看到如下内容:
现在,您可以通过 <NodeIP:30880
使用默认帐户和密码 (admin/P@88w0rd
) 访问 KubeSphere 的 Web 控制台。
22.启用 kubectl 自动补全
KubeKey 不会启用 kubectl 自动补全功能,请参见以下内容并将其打开:
请确保已安装 bash-autocompletion 并可以正常工作。
# Install bash-completion
apt-get install bash-completion
# 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
安装完成!
哥哥好厉害