官方文档:https://kubesphere.io/zh/docs/

硬件推荐配置

image.png

容器运行时

您的集群必须有一个可用的容器运行时。如果您使用 KubeKey 搭建集群,KubeKey 会默认安装最新版本的 Docker。或者,您也可以在创建集群前手动安装 Docker 或其他容器运行时。
image.png

依赖项要求

KubeKey 可以将 Kubernetes 和 KubeSphere 一同安装。针对不同的 Kubernetes 版本,需要安装的依赖项可能有所不同。您可以参考以下列表,查看是否需要提前在节点上安装相关的依赖项。
image.png

KubeKey 是用 Go 语言开发的一款全新的安装工具,代替了以前基于 ansible 的安装程序。KubeKey 为用户提供了灵活的安装选择,可以分别安装 KubeSphere 和 Kubernetes 或二者同时安装,既方便又高效。

网络和 DNS 要求

  • 请确保 /etc/resolv.conf 中的 DNS 地址可用,否则,可能会导致集群中的 DNS 出现问题。
  • 如果您的网络配置使用防火墙规则或安全组,请务必确保基础设施组件可以通过特定端口相互通信。建议您关闭防火墙。有关更多信息,请参见端口要求
  • 支持的 CNI 插件:Calico 和 Flannel。其他插件也适用(例如 Cilium 和 Kube-OVN 等),但请注意它们未经充分测试。

提示:

  • 建议您的操作系统处于干净状态(不安装任何其他软件),否则可能会发生冲突。
  • 如果您无法从 dockerhub.io 下载容器镜像,建议提前准备仓库的镜像地址(即加速器)。有关更多信息,请参见为安装配置加速器

一、准备工作

1、关闭防火墙或开启必要的端口

  1. [root@master ~]# systemctl stop firewalld.service
  2. [root@master ~]# systemctl disable firewalld.service
  3. Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
  4. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

2、查看并关闭swap分区

[root@master ~]# swapoff -a
[root@master ~]# echo "vm.swappiness=0" >> /etc/sysctl.conf
[root@master ~]# sysctl -p /etc/sysctl.conf 
vm.swappiness = 0
[root@master ~]# sed -i 's$/dev/mapper/centos-swap$#/dev/mapper/centos-swap$g' /etc/fstab

3、关闭 Selinux

1、临时关闭(不用重启机器):
setenforce 0 #设置SELinux 成为permissive模式
#setenforce 1 设置SELinux 成为enforcing模式


2、修改配置文件需要重启机器:

修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled

可使用如下命令
[root@master ~]# sed -i 's/enforcing/disabled/g' /etc/selinux/config


### 查看Selinux状态                                                                                                                     
[root kubesphere-master-2 ~]#getenforce                                                                                                                         
Disabled

4、安装依赖组件

yum install -y ebtables socat ipset conntrack

5、安装docker

[root@master ~]# yum install -y yum-utils 

//添加yum源
[root@master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@master ~]# yum makecache fast 

//安装
[root@master ~]# yum -y install docker-ce docker-ce-cli

//启动
[root@master ~]# systemctl enable docker && systemctl start docker 
[root@master ~]# systemctl status docker

设置docker镜像加速器

[root@master ~]# cat > /etc/docker/daemon.json <<EOF 
{
    "registry-mirrors": ["https://gqk8w9va.mirror.aliyuncs.com"]
}
EOF

//重启docker使配置生效
[root@master ~]# systemctl restart docker
[root@master ~]# systemctl status docker
[root@master ~]# docker info|grep "Registry Mirrors" -A 1

image.png

6、DNS

防止出现问题,我把 114.114.114.114 加上了

[root@master ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 202.96.209.133
nameserver 192.168.10.54

[root@master ~]# echo  "nameserver 114.114.114.114" >>  /etc/resolv.conf
[root@master ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 202.96.209.133
nameserver 192.168.10.54
nameserver 114.114.114.114

二、安装 KubeSphere

1、设置kubernetes仓库

[root@master ~]# cat >/etc/yum.repos.d/kubernetes.repo <<EOF 
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

[root@master ~]# yum makecache fast
//安装kubelet和kubectl
[root@master ~]# yum install -y kubelet-1.21.5 kubectl-1.21.5

2、下载 KubeKey

[root@master ~]# mkdir kubekey 
[root@master ~]# cd kubekey
[root@master kubekey]#  export KKZONE=cn
[root@master kubekey]#  curl -sfL https://get-kk.kubesphere.io | VERSION=v1.2.0 sh -
//为 kk 添加可执行权限
[root@master kubekey]# chmod +x kk

3、开始安装

使用kubekey安装kubernetes(v1.21.5)和 kubesphere(v3.2.0)

[root@master kubekey]# ./kk create cluster --with-kubernetes v1.21.5 --with-kubesphere v3.2.0

执行该命令后,KubeKey 将检查您的安装环境,结果显示在一张表格中。有关详细信息,请参见节点要求和依赖项要求。输入 yes 继续安装流程。
image.png

这里可以看到 kubelet 和 kubectl 默认是会安装,上面手动安装的步骤可以省略。docker 最好还是手动安装,这里也检测出了我安装的版本。

当您看到以下输出时,表明安装已经完成。
image.png

输入以下命令以检查安装结果。

[root@master kubekey]#  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)通过<NodeIP>:30880 访问控制台。

image.png

在这里可以看出来本质上是通过 Ansible 部署的。

4、启用 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

详细信息见此

推荐阅读

多节点安装:
https://kubesphere.com.cn/docs/installing-on-linux/introduction/multioverview/

添加新节点:
https://kubesphere.com.cn/docs/installing-on-linux/cluster-operation/add-new-nodes/

删除新节点(需要在目标节点上面设置污点阻止调度并驱逐容器组):
https://kubesphere.com.cn/docs/v3.3/installing-on-linux/cluster-operation/remove-nodes/

镜像仓库:
https://kubesphere.com.cn/docs/project-user-guide/configuration/image-registry/