华为服务器(鲲鹏)aarch64/arm64架构下安装部署K8S(kubeadm工具)

具体安装步骤同《使用kubeadm工具快速部署Kubernetes集群》,不再赘述,这里记录一下填过的坑。

坑一:Docker Image必须是arm64 架构的或者兼容arm64架构

因kubeadm工具安装部署k8s平台,除了kubelet外,kube-apiserver、kube-controller-manager、kube-scheduler、kube-proxy、etcd、cni插件、CoreDNS都是容器部署,所以要求所有的Docker Image必须是arm64 架构的。而大多数的Image都是amd64的。

表现为:频繁create pod,但又失败,查看日志可发现:exec user process caused "exec format error"。

1、如果可以访问k8s.gcr.io,正常部署即可;

2、可以使用Docker Hub上,按照下图所示搜索支持arm64的镜像,例如:kubesphere/kube-apiserver。手动拉取之后修改tag:

 docker tag kubesphere/kube-apiserver:v1.19.0 k8s.gcr.io/kube-apiserver: v1.19.0

                       

 镜像列表如下:

k8s.gcr.io/coredns:1.7.0
k8s.gcr.io/kube-proxy:v1.19.0
k8s.gcr.io/pause:3.2
k8s.gcr.io/kube-controller-manager:v1.19.0
k8s.gcr.io/kube-apiserver:v1.19.0
k8s.gcr.io/kube-scheduler:v1.19.0
k8s.gcr.io/etcd:3.4.13-0
quay.io/coreos/flannel:v0.13.0

 坑二:搭建镜像库使用Harbor+docker-compose会异常困难

 如果要搭建docker私有镜像库,可以使用docker registry安装部署。果断放弃harbor。

1、官方不支持aarch64/arm64架构的二进制docker-compose介质,需要手动pip编译安装 

安装步骤:

1、安装pip和依赖包

yum -y install python3-pip python3-devel libffi-devel openssl-devel gcc glibc make

2、升级pip

pip3 install --upgrade pip

# pip3 --version
pip 20.2.4 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)

3、编译安装docker-compose

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose 或 pip3 install docker-compose

安装完之后,会生成二进制可执行程序:/usr/local/bin/docker-compose,执行如下命令进行验证:

# docker-compose --version
docker-compose version 1.27.4, build unknown

FAQ:

1、不能安装python-pip,这是python2.7下的,编译安装的docker-compose不可用

2、如安装完成后不可用,可先卸载,然后将之重新编译安装:

pip3 uninstall docker-compose

pip3 install --force-reinstall docker-compose

2、harbor官方镜像不支持arm64

3、k8s下部署docker registry部署私有镜像仓库。

# cat registry-deploy.yaml 
apiVersion: apps/v1
kind: Deployment 
metadata:
  name: docker-regisry
spec:
  selector:
    matchLabels:
      app: docker-regisry
  replicas: 1
  template:
    metadata:
      labels:
        app: docker-regisry
    spec:
      nodeName: k8s-02
      containers:
      - name: docker-regisry
        image: registry:2.7.1
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5000
        volumeMounts:
        - name: reg-data
          mountPath: /var/lib/registry
      volumes:
      - name: reg-data
        hostPath:
          path: /home/docker/images

# cat registry-svc.yaml 
apiVersion: v1
kind: Service
metadata:
  name: docker-regisry
  labels:
    name: docker-regisry
spec:
  type: NodePort
  ports:
  - port: 5000
    targetPort: 5000
    nodePort: 5000
    protocol: TCP
  selector:
    app: docker-regisry

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值