谷粒商城-集群-86-K8S 之在 QingCloud (青云) 安装 kubesphere

一、说明

由于本地电脑配置较低,CPU为2核,内存为8G,在一个VrtualBox跑三台虚拟机,实在是卡,kubesphere运行不起来,所以,这里使用 KubeSphere官方文档推荐的青云平台来创建虚三台拟机,这里的虚拟机可以按需付费,还是比较划算的。

二、配置

该文档教程以 QingCloud 云平台为例,先安装 Kubernetes 集群和 StorageClass,来准备安装示例的前提条件(即 K8s 集群),然后再在 K8s 集群一键安装 KubeSphere,与其它云平台安装步骤类似,具体以其官方文档为准。

虚拟机配置

虚拟机名 CPU 内存 硬盘
master 2 4G 40G
node1 2 4G 40G
node2 2 4G 40G

Kubernetes/KubeSphere nodes

Node IP Hostname Role
192.168.0.2 master master,etcd
192.168.0.3 node1 node
192.168.0.4 node2 node

安装流程,主要参考:https://v2-1.docs.kubesphere.io/docs/zh-CN/installation/install-on-k8s/

三、创建VPC

在QingCloud平台的网络与VPN下,创建VPC私有网络。在 VPC 网络内,您可以自定义 IP 地址范围、创建子网,并在子网内创建主机/数据库/大数据等各种云资源。
file

点击刚才创建的VPC实例,然后创建私有网络:
file

创建好后的网络:
file

四、创建三台虚拟机

虚拟机配置

虚拟机名 CPU 内存 硬盘
master 2 8G 40G
node1 2 4G 40G
node2 2 4G 40G

创建master

file

不要忘了设置hostname。

按照master创建方法,创建其他两个节点的虚拟机,创建好的虚拟机:
file

五、申请公网IP

file

这里暂时申请 100M,等安装好kubesphere之后再降回4M。

创建好公网IP之后,将其分配到VPC网络,这样在VPC里边的所有虚拟机都可以访问到外边的网络了。
file

六、添加源端口转发

在VPC添加端口映射规则,可以使用xshell 访问:
file

在设置好之后,需要点击 【应用修改】:
file

另外,还需要检查防火墙是否有开启 22 端口,否则使用xshell连接不上。

七、安装kubernetes

1、安装curl软件

远程登录master主机,安装curl软件

[root@master ~]# yum -y install curl                                                           
Loaded plugins: fastestmirror

测试其他节点访问:

[root@master ~]# ssh 192.168.0.3                                                               
Warning: Permanently added '192.168.0.3' (ECDSA) to the list of known hosts.                   
root@192.168.0.3's password:                                                                   
[root@node1 ~]# hostname                                                          
node1                                                                                          
[root@node1 ~]#                    

# hostnamectl set-hostname node1  #如果未设置hostname,则可以在此设置
# reboot

2、准备安装配置文件

2.1、下载kubesphere安装包(主节点)

Multi-Node 模式

curl -L https://kubesphere.io/download/stable/v2.1.1 > installer.tar.gz \
&& tar -zxf installer.tar.gz && cd kubesphere-all-v2.1.1/conf

编辑主机配置文件 conf/hosts.ini,为了对目标机器及部署流程进行集中化管理配置,集群中各个节点在主机配置文件 hosts.ini中应参考如下配置,建议使用 root用户进行安装。

[root@master conf]# cat hosts.ini                                                              
; Parameters:                                                                                  
;  ansible_connection: connection type to the target machine                                   
;  ansible_host: the host name of the target machine                                           
;  ip: ip address of the target machine                                                        
;  ansible_user: the default user name for ssh connection                                      
;  ansible_ssh_pass: the password for ssh connection                                           
;  ansible_become_pass: the privilege escalation password to grant access                      
;  ansible_port: the ssh port number, if not 22                                                

; If installer is ran as non-root user who has sudo privilege, refer to the following sample co
nfiguration:                                                                                   
; e.g                                                                                          
;  master ansible_connection=local  ip=192.168.0.5  ansible_user=ubuntu  ansible_become_pass=Qc
loud@123                                                                                       
;  node1  ansible_host=192.168.0.6  ip=192.168.0.6  ansible_user=ubuntu  ansible_become_pass=Qc
loud@123
;  node2  ansible_host=192.168.0.8  ip=192.168.0.8  ansible_user=ubuntu  ansible_become_pass=Qc
loud@123

; As recommended as below sample configuration, use root account by default to install

[all]
master ansible_connection=local  ip=192.168.0.2
node1  ansible_host=192.168.0.3  ip=192.168.0.3  ansible_ssh_pass=K8stest888
node2  ansible_host=192.168.0.4  ip=192.168.0.4  ansible_ssh_pass=K8stest888

[kube-master]
master

[kube-node]
master
node1
node2

[etcd]
master

[k8s-cluster:children]
kube-node
kube-master 
[root@master conf]# 

注意:一定要把 master节点加入到 [kube-node] ,否则在后边的安装会报错。

2.2 修改安装文件,只安装Kubernetes,注释掉kubesphere安装:
搜索 multi-node关键词,然后注释掉kubesphere安装语句,注意这里是 muti-node节点的注释,不是单节点的。

[root@master scripts]# pwd
/root/kubesphere-all-v2.1.1/scripts
vi install.sh

file

进入安装目录,建议使用 root 用户执行 install.sh安装脚本。再次提醒大陆用户需要配置镜像加速.

./install.sh

输入数字 2选择第二种 Multi-node 模式开始部署,安装程序会提示您的环境是否前提条件,若满足请输入 "yes" 开始安装。

2.3 验证 KubeSphere 集群部署是否成功:

(1) 待安装脚本执行完后,请耐心等待,当看到如下 "Successful"的日志,则说明 KubeSphere 安装成功。

3、master节点打污点

1)、查看master是否有污点

kubectl describe node master | grep Taint

去掉污点:

[root@i-qtyoi0tr master]# kubectl taint nodes master node-role.kubernetes.io/master:NoSchedule-
node/master untainted
[root@i-qtyoi0tr master]# kubectl describe node master | grep Taint
Taints:             <none>
[root@i-qtyoi0tr k8s]# 

在上一步安装的时候一定要去掉master污点,否则在安装的时候会报错。

2)、国内镜像源

在使用 helm安装时,查看镜像源是否可用,如果可用则跳过该步骤

[root@master ~]# helm repo list
NAME    URL                         
local   http://127.0.0.1:8879/charts

[root@master ~]# helm install --namespace openebs --name openebs stable/openebs --version 1.5.0
Error: failed to download "stable/openebs" (hint: running `helm repo update` may help)

以上看到,镜像仓库是本地地址,所以,在使用 helm install 安装时,会报错误。

添加国内镜像:

[root@master ~]# helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
"stable" has been added to your repositories

[root@master ~]# helm repo list
NAME    URL                                                   
local   http://127.0.0.1:8879/charts                          
stable  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
jenkins https://charts.jenkins.io                 

更新镜像仓库:

[root@master ~]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "stable" chart repository
...Successfully got an update from the "jenkins" chart repository
Update Complete.

[root@master ~]# helm search
NAME                            CHART VERSION   APP VERSION     DESCRIPTION                                                 
jenkins/jenkins                 3.0.14          2.263.1         Jenkins - Build great things at any scale! The leading op...
stable/acs-engine-autoscaler    2.1.3           2.1.1           Scales worker nodes within agent pools                      
stable/aerospike                0.1.7           v3.14.1.2       A Helm chart for Aerospike in Kubernetes                    
stable/anchore-engine           0.1.3           0.1.6           Anchore container analysis and policy evaluation engine s...
...

可以看到,helm已经可以正常使用了

3)、安装openebs
创建 OpenEBS 的 namespace,OpenEBS 相关资源将创建在这个 namespace 下:

kubectl create ns openebs

安装 OpenEBS,以下列出两种方法,可参考其中任意一种进行创建:

helm install --namespace openebs --name openebs stable/openebs --version 1.5.0

安装 OpenEBS 后将自动创建 4 个 StorageClass,查看创建的 StorageClass:

$ kubectl get sc
NAME                        PROVISIONER                                                AGE
openebs-device              openebs.io/local                                           10h
openebs-hostpath            openebs.io/local                                           10h
openebs-jiva-default        openebs.io/provisioner-iscsi                               10h
openebs-snapshot-promoter   volumesnapshot.external-storage.k8s.io/snapshot-promoter   10h

如下将 openebs-hostpath 设置为 默认的 StorageClass:

$ kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
storageclass.storage.k8s.io/openebs-hostpath patched

提示:由于在文档开头手动去掉了 master 节点的 Taint,我们可以在安装完 OpenEBS 和 KubeSphere 后,可以将 master 节点 Taint 加上,避免业务相关的工作负载调度到 master 节点抢占 master 资源:

$ kubectl taint nodes master node-role.kubernetes.io/master=:NoSchedule

八、安装kubesphere

最小化安装 KubeSphere

kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-minimal.yaml

提示:若您的服务器提示无法访问 GitHub,可将 kubesphere-minimal.yaml 文件保存到本地作为本地的静态文件,再参考上述命令进行安装。

curl -0 https://raw.githubusercontent.com/kubesphere/ks-installer/master/kubesphere-minimal.yaml

部署成功:

###              Welcome to KubeSphere!           ###
#####################################################

Console: http://192.168.0.2:30880
Account: admin
Password: P@88w0rd

NOTE:Please modify the default password after login.
#####################################################

如果上述安装不成功,可以参考如下官方安装方法:
https://github.com/kubesphere/ks-installer

最小化安装(Minimal Installation):

kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.0.0/kubesphere-installer.yaml
kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.0.0/cluster-configuration.yaml

然后检查安装日志:

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f

When all Pods of KubeSphere are running, it means the installation is successful. Check the port (30880 by default) of the console service by the following command. Then you can use http://IP:30880 to access the console with the default account admin/P@88w0rd.

kubectl get svc/ks-console -n kubesphere-system

若需要在外网访问,在云平台需要在端口转发规则中将内网端口 30880 转发到源端口 30880,然后在防火墙开放这个源端口,确保外网流量可以通过该端口。

例如在 QingCloud 平台配置端口转发和防火墙规则,则可以参考 云平台配置端口转发和防火墙。

(3) 安装成功后,浏览器访问对应的 URL,如 http://{$公网IP}:30880,即可进入 KubeSphere 登录界面,可使用默认的用户名和密码登录 KubeSphere 控制台体验,登录后请立即修改默认密码。参阅 快速入门 帮助您快速上手 KubeSphere。

file

登录公网访问:
file

终于安装成功了,折腾了好几天,一个字“累”,但很有成就感!

九、降低宽带

在安装成功后,将公网宽带降为4M,节省费用。
file


相关文章:
KubeSphere Multi-Node 模式
在 Kubernetes 安装 KubeSphere
安装 OpenEBS 创建 LocalPV 存储类型
KubeSphere云平台配置端口转发和防火墙
KubeSphere ks-installer官方安装方法
K8S,KubeSphere安装与卸载

为者常成,行者常至