暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

云原生 | 如何在arm64架构系统上安装kubernetes及适配kubevela?

244





Cloud Native

ESG服务BU云原生交付中心、云基地

在云原生上的尝试、调研与分享




本期内容 

 arm64架构系统 

安装 kubernetes 


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


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




arm64机器 

安装kubernetes


 安装dockers 


# 下载阿里云docker yum 源


wget:

https://mirrors.aliyun.com/docker-ce/linux/

centos/docker-ce.repo -O /etc/yum.repos.d/

docker-ce.repo




# 安装docker 


yum -y install docker-ce



# 设置开机启动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




    # 使配置生效,重启docker


    systemctl daemon-reload

    systemctl restart docker



    # 查看docker状态


    service docker status



    # 查看docker版本




     设置网络 


    # 关闭防火墙


    systemctl stop firewalld

    systemctl disable firewalld



    # 三台主机全部关闭selinux



    # 关闭swap分区



    # 设置节点解析


    cat >> /etc/hosts << EOF

    xxx.xxx.xxx.xx master

    EOF



    # 设置主机名


    vim /etc/hosts

    hostname master



    # 将桥接的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





     通过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




      # 安装kubectl,kubeadm,kubelet


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



      # 启动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




        # 设置kubectl


        mkdir -p $HOME/.kube

        sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

        sudo chown $(id -u):$(id -g) $HOME/.kube/config



        # 设置集群网络(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-






        arm64机器 

        安装kubevela


         安装cli 


        在对应的官方github项目地址中,找到对应的机器版本即可。


        这里选择现在对应的arm64版本,并在解压后将vela文件移动到/usr/local/bin文件夹下即可


         安装core 


        这里在arm64类型的机器上安装core时,我选择使用helm的方式安装。


        在安装时对于arm64的机器需要选择使用对应的arm64的镜像。


        如果不做特殊的设置,在进行安装时发现gateway的pod无法正常运行,通过查看容器日志发现报exec format error 。


        这里的这个报错原因就是因为容器使用的镜像是amd64而不是arm64的镜像导致的。


        通过查看artifacthub上的对应的参数,发现可以通过以下参数来设置使用的镜像tag:



        这里再查看dockerhub发现该镜像将arm64架构的镜像进行了单独tag:



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


         安装velaux 


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


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


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



        通过查看dockerhub上对应镜像的文件,发现同一个tag的镜像中包含了不通架构的镜像分支。


        所以这里通过指定特定架构的镜像分支来指定使用特定架构的镜像。



        同理,在打velaux前端项目的镜像时,也指定具体的digest即可。


        但是在打velaux镜像时发现其中设置了GITVERSION的参数,将对应的值设置在了镜像/tmp/version中。


        但是在全局搜索中并未发现这个值有使用到,并且在打镜像时这个值不设置还会影响镜像的构建。



        这里我们选择将该行删除,就可以正常构建镜像啦~





        本期内容就到这里啦

        内容很多

        强烈建议收藏!!!

        ⬇可以加入社群一起讨论哦⬇

        本期作者 

        GO开发工程师 冯康 



        更多精彩内容 





        了解云基地,就现在!


        IT技术哪家

        神州数码最在行

        行业新星后起之秀

        历史虽不长,但实 力 强




        文章转载自神州数码云基地,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论