【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela

目录

  • arm64机器安装kubernetes
    • 安装docker
      • 下载阿里云docker yum 源
      • 安装docker
      • 设置开机启动docker
      • 设置docker的cgroup驱动,推荐systemd
      • 使配置生效,重启docker
      • 查看docker状态
      • 查看docker版本
    • 设置网络
      • 关闭防火墙
      • 三台主机全部关闭selinux
      • 关闭swap分区
      • 设置节点解析
      • 设置主机名
      • 将桥接的IPv4流量传递到iptables的链
    • 通过kubeadm工具安装kubernetes
      • 添加网络源
      • 安装kubectl,kubeadm,kubelet
      • 启动kubelet服务
      • 初始化集群
      • 设置kubectl
      • 设置集群网络(flannel)
      • 去除主节点污点
      • 查看节点状态
  • arm64机器安装kubevela
    • 安装cli
    • 安装core
    • 安装velaux


为了适应国内越来越多的国产化服务器以及配套产品,许多软件也诞生了适配国内服务器的新需求。

本文将描述在华为服务器arm64架构系统上,如何去安装适配kubernetes以及kubevela。

arm64机器安装kubernetes

安装docker

下载阿里云docker yum 源

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第1张图片

安装docker

yum -y install docker-ce

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第2张图片
【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第3张图片
【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第4张图片
【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第5张图片
【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第6张图片
在这里插入图片描述

设置开机启动docker

systemctl start docker

systemctl enable docker

在这里插入图片描述

设置docker的cgroup驱动,推荐systemd

cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": ["https://apvimgsq.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
   "max-size": "100m"
  },
  "storage-driver": "overlay2"
}

EOF

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第7张图片

使配置生效,重启docker

systemctl daemon-reload

systemctl restart docker

在这里插入图片描述

查看docker状态

service docker status

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第8张图片

查看docker版本

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第9张图片


设置网络

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

在这里插入图片描述

三台主机全部关闭selinux

在这里插入图片描述

关闭swap分区

在这里插入图片描述

设置节点解析

cat >> /etc/hosts << EOF
xxx.xxx.xxx.xx master
EOF

在这里插入图片描述

设置主机名

vim /etc/hosts
hostname master

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第10张图片

将桥接的IPv4流量传递到iptables的链

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第11张图片


通过kubeadm工具安装kubernetes

添加网络源

cat > /etc/yum.repos.d/kubernetes.repo << EOF

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64/

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

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第12张图片

安装kubectl,kubeadm,kubelet

yum install -y kubelet-1.22.0 kubeadm-1.22.0 kubectl-1.22.0

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第13张图片
【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第14张图片
【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第15张图片

启动kubelet服务

systemctl enable kubelet

在这里插入图片描述

初始化集群

kubeadm init \
  --apiserver-advertise-address=xxx.xxx.xxx.xxx \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.22.0 \
  --service-cidr=10.1.0.0/16 \
  --pod-network-cidr=10.244.0.0/16

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第16张图片

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第17张图片

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第18张图片

设置kubectl

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第19张图片

设置集群网络(flannel)

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

在这里插入图片描述

去除主节点污点

kubectl describe node master | grep Taint
kubectl taint node master node-role.kubernetes.io/master:NoSchedule-

在这里插入图片描述

查看节点状态

kubectl get nodes

在这里插入图片描述


arm64机器安装kubevela

安装cli

在对应的官方github项目地址中找到对应的机器版本即可,这里选择现在对应的arm64版本,并在解压后将vela文件移动到/usr/local/bin文件夹下即可。

安装core

这里在arm64类型的机器上进行安装core时,我选择使用helm的方式安装。在安装时对于arm64的机器需要选择使用对应的arm64的镜像。

如果不做特殊的设置,在进行安装时发现gateway的pod无法正常运行,通过查看容器日志发现报exec format error ,这里的这个报错原因就是因为容器所使用的镜像是amd64而不是arm64的镜像导致的。

通过查看artifacthub上的对应的参数发现可以通过以下参数来设置使用的镜像tag。
【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第20张图片

这里再查看dockerhub发现该镜像将arm64架构的镜像进行了单独tag。
【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第21张图片

所以在进行helm安装时我们通过命令行—set来指定具体的镜像tag即可指定到对应的镜像

安装velaux

这里我们选择私有的镜像,由于要适配arm64架构的机器需要使用源码来进行打镜像。

这里使用kubevela的官方Dockerfile来进行打镜像。

在打apiserver的镜像时使用Dockerfile.apiserver。

通过查看Dockerfile发现其中指定了platform参数来指定具体的镜像架构平台,但是却只指定了构建过程的镜像(golang镜像),却没有设定运行的镜像架构(alpine镜像)

在这里插入图片描述

在这里插入图片描述

通过查看dockerhub上对应镜像的文件,发现同一个tag的镜像中包含了不通架构的镜像分支,所以这里通过指定特定的架构的镜像分支来指定使用特定架构的镜像。

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第22张图片
【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第23张图片

在这里插入图片描述

同理,在打velaux前端项目的镜像时也指定具体的digest即可,但是在打velaux镜像时发现其中设置了GITVERSION的参数将对应的值设置在了镜像/tmp/version中。

但是在全局搜索中并未发现这个值有使用到,并且在打镜像时这个值不设置还会影响镜像的构建,所以这里选择将该行删除,然后即可正常构建镜像

【云原生】手把手教你在arm64架构系统,安装kubernetes及适配kubevela_第24张图片

版权声明:该内容由神州数码云基地团队编撰,转载请注明出处!
微信公众号后台回复“云原生”,可加入技术交流群!

你可能感兴趣的:(云原生,kubernetes,云原生,架构)