随着“中兴事件”不断升级,引起了国人对国产自主可控技术的高度关注;本人作为所在单位的运维工程师,也希望能找到一个稳定、能兼容国产CPU的一整套架构方案,来构建IaaS平台和PaaS平台,满足单位对安全自主可控的需求。要基于全国产方式解决公司业务需求至少要在软硬件层面满足,而国内基本都是基于x86解决方案,想找到满足需求的国产化解决方案还是非常困难的事情。但笔者由于一个偶然的机会,接触到了国产的芯片厂商和云计算厂商,并得知他们已经实现了全国产化的云计算平台,笔者也亲自动手体验了安装部署该云计算平台,并在其之上安装部署了容器平台。上篇我给大家分享了国产CPU的服务器华芯通和国产云平台ZStack试用体验,接下来将为大家详细分享如何基于ZStack云主机构建K8S集群。
第三节 基于ZStack云主机构建K8S集群
这里要提一下,为什么我们不直接使用物理ARM服务器部署K8S集群,这跟单位测试场景有关系,既要使用云主机透传GPU计算卡进行大量的计算,又要实现容器管理平台。况且国外主流的K8S集群通常是跑在虚拟机里面的,运行在虚拟机里面的好处有很多,比如可以实现资源定制分配、利用云平台API接口可以快速生成K8S集群Node节点、更好的灵活性以及可靠性;在ZStack ARM云平台上可以同时构建IaaS+PaaS混合平台,满足不同场景下的需求。
由于篇幅有限下面先介绍一下如何在基于ZStack For ARM平台中云主机部署K8S集群,整个部署过程大概花1小时(这主要是访问部分国外网络时不是很顺畅)。
集群环境介绍:
在本环境中用于构建K8S集群所需的资源,为基于ZStack构建的平台上的云主机:
1、准备工作
配置主机名
hostnamectl set-hostname K8S-Master
hostnamectl set-hostname K8S-Node1
hostnamectl set-hostname K8S-Node2
hostnamectl set-hostname K8S-Node3
所有云主机上关闭swap分区 否则会报错;该操作只需在云主机环境下执行,物理机环境无需操作。
sudo swapoff -a
2、安装部署
2.1安装Docker
step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=arm64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
Step 4: 更新并安装 Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce
使用daocloud对docker镜像下载进行加速。
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://56d10455.m.daocloud.io
2.2安装go环境
apt-get install golang- golang
2.3 安装kubelet、kubeadm、kubectl
apt-get update && apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubectl kubeadm kubectl
2.4 用kubeadm创建集群
初始化Master
kubeadm init --apiserver-advertise-address 172.120.194.196 --pod-network-cidr 10.244.0.0/16
执行完上面命令后,如果中途不报错会出现类似以下信息:
kubeadm join 172.120.194.196:6443 --token oyf6ns.whcoaprs0q7growa --discovery-token-ca-cert-hash sha256:30a459df1b799673ca87f9dcc776f25b9839a8ab4b787968e05edfb6efe6a9d2
这段信息主要是提示如何注册其他节点到K8S集群。
2.5 配置kubectl
Kubectl是管理K8S集群的命令行工具,因此需要对kubectl运行环境进行配置。
su - zstack
sudo mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
echo "source <(kubectl completion bash)" >> ~/.bash
2.6 安装Pod网络
为了让K8S集群的Pod之间能够正常通讯,必须安装Pod网络