ARM架构安装Kubernetes集群

AI摘要
TianliGPT
生成中...

背景

类型 版本
操作系统 CentOS Linux release 7.6.1810 (AltArch)
内核 Linux master 4.18.0-80.7.2.el7.aarch64
硬件配置 8核16G内存 * 2台
计算机名 master、node1
K8S版本 1.14.2
计算机名 公网IP 私网IP
master 116.63.180.97 192.168.0.113
node1 116.63.177.54 192.168.0.226

说明:

  1. 搭建K8s集群,每台节点均需要按照文档安装Docker及K8s的全部组件。
  2. 为验证集群搭建功能,至少需要两个节点。如果要验证亲和性调度功能,至少需要三台节点,安装配置工作在每台节点都需要执行。
  3. Master为集群管理节点,node1为集群计算节点。

一、配置华为云yum源

1.1 配置华为云yum源。

<span class="hljs-attr">cat</span> <span class="hljs-string"><<EOF > /etc/yum.repos.d/kubernetes.repo</span>
<span class="hljs-attr">[kubernetes]</span>
<span class="hljs-attr">name</span>=<span class="hljs-string">Kubernetes </span>
<span class="hljs-attr">baseurl</span>=<span class="hljs-string">https://mirrors.huaweicloud.com/kubernetes/yum/repos/kubernetes-el7-aarch64</span>
<span class="hljs-attr">enabled</span>=<span class="hljs-string">1 </span>
<span class="hljs-attr">gpgcheck</span>=<span class="hljs-string">1 </span>
<span class="hljs-attr">repo_gpgcheck</span>=<span class="hljs-string">1 </span>
<span class="hljs-attr">gpgkey</span>=<span class="hljs-string">http://mirrors.huaweicloud.com/kubernetes/yum/doc/yum-key.gpg</span>
<span class="hljs-attr">http</span>:<span class="hljs-string">//mirrors.huaweicloud.com/kubernetes/yum/doc/rpm-package-key.gpg</span>
<span class="hljs-attr">EOF</span>
<span class="hljs-attr">cat</span> <span class="hljs-string"><<EOF > /etc/yum.repos.d/kubernetes.repo</span>
<span class="hljs-attr">[kubernetes]</span>
<span class="hljs-attr">name</span>=<span class="hljs-string">Kubernetes </span>
<span class="hljs-attr">baseurl</span>=<span class="hljs-string">https://mirrors.huaweicloud.com/kubernetes/yum/repos/kubernetes-el7-aarch64</span>
<span class="hljs-attr">enabled</span>=<span class="hljs-string">1 </span>
<span class="hljs-attr">gpgcheck</span>=<span class="hljs-string">1 </span>
<span class="hljs-attr">repo_gpgcheck</span>=<span class="hljs-string">1 </span>
<span class="hljs-attr">gpgkey</span>=<span class="hljs-string">http://mirrors.huaweicloud.com/kubernetes/yum/doc/yum-key.gpg</span>
        <span class="hljs-attr">http</span>:<span class="hljs-string">//mirrors.huaweicloud.com/kubernetes/yum/doc/rpm-package-key.gpg</span>
<span class="hljs-attr">EOF</span>
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.huaweicloud.com/kubernetes/yum/repos/kubernetes-el7-aarch64 enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=http://mirrors.huaweicloud.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.huaweicloud.com/kubernetes/yum/doc/rpm-package-key.gpg EOF

说明:
若没有找到需要的k8s版本,可自行配置阿里yum源

1.2 刷新yum缓存。

<span class="hljs-attribute">yum</span> makecache
<span class="hljs-attribute">yum</span> makecache
yum makecache

二、安装配置K8S

主节点和计算节点都需要安装配置K8s。

2.1 安装Docker

2.1.1 安装yum-utils软件包并设置稳定的存储库。

<span class="hljs-attr">yum</span> <span class="hljs-string">install -y yum-utils</span>
<span class="hljs-meta">yum-config-manager</span> <span class="hljs-string">\
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo</span>
<span class="hljs-attr">yum</span> <span class="hljs-string">install -y yum-utils</span>
<span class="hljs-meta">yum-config-manager</span> <span class="hljs-string">\
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo</span>
yum install -y yum-utils yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

2.1.2 安装特定版本Docker

要安装特定版本的Docker Engine,可以先通过命名查看存储库,列出可用版本,然后选择并安装:

yum <span class="hljs-built_in">list</span> docker-ce --showduplicates | sort -r
yum <span class="hljs-built_in">list</span> docker-ce-cli --showduplicates | sort -r
yum <span class="hljs-built_in">list</span> docker-ce --showduplicates | sort -r
yum <span class="hljs-built_in">list</span> docker-ce-cli --showduplicates | sort -r
yum list docker-ce --showduplicates | sort -r yum list docker-ce-cli --showduplicates | sort -r

然后根据版本号安装(本文选择),例如:

<span class="hljs-attribute">yum</span> install docker-ce-<span class="hljs-number">18</span>.<span class="hljs-number">09</span>.<span class="hljs-number">9</span>-<span class="hljs-number">3</span>.el<span class="hljs-number">7</span> docker-ce-cli-<span class="hljs-number">18</span>.<span class="hljs-number">09</span>.<span class="hljs-number">9</span>-<span class="hljs-number">3</span>.el<span class="hljs-number">7</span> containerd.io
<span class="hljs-attribute">yum</span> install docker-ce-<span class="hljs-number">18</span>.<span class="hljs-number">09</span>.<span class="hljs-number">9</span>-<span class="hljs-number">3</span>.el<span class="hljs-number">7</span> docker-ce-cli-<span class="hljs-number">18</span>.<span class="hljs-number">09</span>.<span class="hljs-number">9</span>-<span class="hljs-number">3</span>.el<span class="hljs-number">7</span> containerd.io
yum install docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io

也可以安装最新版,例如直接使用方式,本文选择的不是最新版本,安装的是指定版本18.09

<span class="hljs-selector-tag">yum</span> <span class="hljs-selector-tag">install</span> <span class="hljs-selector-tag">docker-ce</span> <span class="hljs-selector-tag">docker-ce-cli</span> <span class="hljs-selector-tag">containerd</span><span class="hljs-selector-class">.io</span>
<span class="hljs-selector-tag">yum</span> <span class="hljs-selector-tag">install</span> <span class="hljs-selector-tag">docker-ce</span> <span class="hljs-selector-tag">docker-ce-cli</span> <span class="hljs-selector-tag">containerd</span><span class="hljs-selector-class">.io</span>
yum install docker-ce docker-ce-cli containerd.io

2.1.3 安装完成启动

<span class="hljs-attribute">systemctl</span> start docker
<span class="hljs-attribute">systemctl</span> start docker
systemctl start docker

2.1.4 通过docker version查看版本

ARM架构安装Kubernetes集群-牛魔博客

2.1.5 设置docker开机启动

systemctl <span class="hljs-built_in">enable</span> docker
systemctl <span class="hljs-built_in">enable</span> docker
systemctl enable docker

2.2 安装基础组件

2.2.1 启用NET.BRIDGE.BRIDGE-NF-CALL-IPTABLES内核选项。

sysctl -w <span class="hljs-built_in">net</span>.bridge.bridge-nf-<span class="hljs-keyword">call</span>-iptables=<span class="hljs-number">1</span>
sysctl -w <span class="hljs-built_in">net</span>.bridge.bridge-nf-<span class="hljs-keyword">call</span>-iptables=<span class="hljs-number">1</span>
sysctl -w net.bridge.bridge-nf-call-iptables=1

2.2.2 禁用交换分区。

swapoff -a
cp -p /etc/fstab /etc/fstab.bak$(<span class="hljs-built_in">date</span> '+<span class="hljs-variable">%Y%</span>m<span class="hljs-variable">%d%</span>H<span class="hljs-variable">%M%</span>S')
sed -i "s/\/dev\/mapper\/centos-swap/\#\/dev\/mapper\/centos-swap/g" /etc/fstab
swapoff -a
cp -p /etc/fstab /etc/fstab.bak$(<span class="hljs-built_in">date</span> '+<span class="hljs-variable">%Y%</span>m<span class="hljs-variable">%d%</span>H<span class="hljs-variable">%M%</span>S')
sed -i "s/\/dev\/mapper\/centos-swap/\#\/dev\/mapper\/centos-swap/g" /etc/fstab
swapoff -a cp -p /etc/fstab /etc/fstab.bak$(date '+%Y%m%d%H%M%S') sed -i "s/\/dev\/mapper\/centos-swap/\#\/dev\/mapper\/centos-swap/g" /etc/fstab

2.2.3 安装K8s组件。

<span class="hljs-attribute">yum</span> install -y kubelet kubeadm kubectl kubernetes-cni
<span class="hljs-attribute">yum</span> install -y kubelet kubeadm kubectl kubernetes-cni
yum install -y kubelet kubeadm kubectl kubernetes-cni

ARM架构安装Kubernetes集群-牛魔博客

2.2.4 查看安装情况。

rpm -qa | <span class="hljs-keyword">grep</span> kubelet
rpm -qa | <span class="hljs-keyword">grep</span> kubeadm
rpm -qa | <span class="hljs-keyword">grep</span> kubectl
rpm -qa | <span class="hljs-keyword">grep</span> kubernetes-cni
rpm -qa | <span class="hljs-keyword">grep</span> kubelet
rpm -qa | <span class="hljs-keyword">grep</span> kubeadm
rpm -qa | <span class="hljs-keyword">grep</span> kubectl
rpm -qa | <span class="hljs-keyword">grep</span> kubernetes-cni
rpm -qa | grep kubelet rpm -qa | grep kubeadm rpm -qa | grep kubectl rpm -qa | grep kubernetes-cni

例如看到如下内容代表安装成功

[root@master aarch64]<span class="hljs-comment"># rpm -qa | grep kubelet</span>
kubelet<span class="hljs-number">-1.14</span><span class="hljs-number">.2</span><span class="hljs-number">-0.</span>aarch64
[root@master aarch64]<span class="hljs-comment"># rpm -qa | grep kubeadm</span>
kubeadm<span class="hljs-number">-1.14</span><span class="hljs-number">.2</span><span class="hljs-number">-0.</span>aarch64
[root@master aarch64]<span class="hljs-comment"># rpm -qa | grep kubectl</span>
kubectl<span class="hljs-number">-1.14</span><span class="hljs-number">.2</span><span class="hljs-number">-0.</span>aarch64
[root@master aarch64]<span class="hljs-comment"># rpm -qa | grep kubernetes-cn</span>
kubernetes-cni<span class="hljs-number">-0.7</span><span class="hljs-number">.5</span><span class="hljs-number">-0.</span>aarch64
[root@master aarch64]<span class="hljs-comment"># rpm -qa | grep kubelet</span>
kubelet<span class="hljs-number">-1.14</span><span class="hljs-number">.2</span><span class="hljs-number">-0.</span>aarch64
[root@master aarch64]<span class="hljs-comment"># rpm -qa | grep kubeadm</span>
kubeadm<span class="hljs-number">-1.14</span><span class="hljs-number">.2</span><span class="hljs-number">-0.</span>aarch64
[root@master aarch64]<span class="hljs-comment"># rpm -qa | grep kubectl</span>
kubectl<span class="hljs-number">-1.14</span><span class="hljs-number">.2</span><span class="hljs-number">-0.</span>aarch64
[root@master aarch64]<span class="hljs-comment"># rpm -qa | grep kubernetes-cn</span>
kubernetes-cni<span class="hljs-number">-0.7</span><span class="hljs-number">.5</span><span class="hljs-number">-0.</span>aarch64
[root@master aarch64]# rpm -qa | grep kubelet kubelet-1.14.2-0.aarch64 [root@master aarch64]# rpm -qa | grep kubeadm kubeadm-1.14.2-0.aarch64 [root@master aarch64]# rpm -qa | grep kubectl kubectl-1.14.2-0.aarch64 [root@master aarch64]# rpm -qa | grep kubernetes-cn kubernetes-cni-0.7.5-0.aarch64

2.2.5 设置iptables。

echo <span class="hljs-string">"net.bridge.bridge-nf-call-iptables=1"</span> > <span class="hljs-regexp">/etc/</span>sysctl.d/k8s.conf
echo <span class="hljs-string">"net.bridge.bridge-nf-call-iptables=1"</span> > <span class="hljs-regexp">/etc/</span>sysctl.d/k8s.conf
echo "net.bridge.bridge-nf-call-iptables=1" > /etc/sysctl.d/k8s.conf

2.2.6 开机启动kubelet服务。

systemctl <span class="hljs-built_in">enable</span> kubelet
systemctl <span class="hljs-built_in">enable</span> kubelet
systemctl enable kubelet

2.3 通过Docker下载其它组件

2.3.1 查看下载节点初始化所需镜像。

kubeadm config images <span class="hljs-built_in">list</span>
kubeadm config images <span class="hljs-built_in">list</span>
kubeadm config images list
[root@master aarch64]# kubeadm <span class="hljs-built_in">config</span> images list
I1208 <span class="hljs-number">09</span>:<span class="hljs-number">21</span>:<span class="hljs-number">05.327540</span> <span class="hljs-number">2544</span> version.go:<span class="hljs-number">96</span>] could <span class="hljs-keyword">not</span> fetch a Kubernetes version from the internet: unable to get URL <span class="hljs-string">"https://dl.k8s.io/release/stable-1.txt"</span>: Get https://storage.googleapis.com/kubernetes-release/release/stable<span class="hljs-number">-1.</span>txt: net/http: request canceled (Client.Timeout exceeded <span class="hljs-keyword">while</span> awaiting headers)
I1208 <span class="hljs-number">09</span>:<span class="hljs-number">21</span>:<span class="hljs-number">05.327591</span> <span class="hljs-number">2544</span> version.go:<span class="hljs-number">97</span>] falling back to the <span class="hljs-keyword">local</span> client version: v1<span class="hljs-number">.14</span><span class="hljs-number">.2</span>
k8s.gcr.<span class="hljs-built_in">io</span>/kube-apiserver:v1<span class="hljs-number">.14</span><span class="hljs-number">.2</span>
k8s.gcr.<span class="hljs-built_in">io</span>/kube-controller-manager:v1<span class="hljs-number">.14</span><span class="hljs-number">.2</span>
k8s.gcr.<span class="hljs-built_in">io</span>/kube-scheduler:v1<span class="hljs-number">.14</span><span class="hljs-number">.2</span>
k8s.gcr.<span class="hljs-built_in">io</span>/kube-proxy:v1<span class="hljs-number">.14</span><span class="hljs-number">.2</span>
k8s.gcr.<span class="hljs-built_in">io</span>/pause:<span class="hljs-number">3.1</span>
k8s.gcr.<span class="hljs-built_in">io</span>/etcd:<span class="hljs-number">3.3</span><span class="hljs-number">.10</span>
k8s.gcr.<span class="hljs-built_in">io</span>/coredns:<span class="hljs-number">1.3</span><span class="hljs-number">.1</span>
[root@master aarch64]# kubeadm <span class="hljs-built_in">config</span> images list
I1208 <span class="hljs-number">09</span>:<span class="hljs-number">21</span>:<span class="hljs-number">05.327540</span>    <span class="hljs-number">2544</span> version.go:<span class="hljs-number">96</span>] could <span class="hljs-keyword">not</span> fetch a Kubernetes version from the internet: unable to get URL <span class="hljs-string">"https://dl.k8s.io/release/stable-1.txt"</span>: Get https://storage.googleapis.com/kubernetes-release/release/stable<span class="hljs-number">-1.</span>txt: net/http: request canceled (Client.Timeout exceeded <span class="hljs-keyword">while</span> awaiting headers)
I1208 <span class="hljs-number">09</span>:<span class="hljs-number">21</span>:<span class="hljs-number">05.327591</span>    <span class="hljs-number">2544</span> version.go:<span class="hljs-number">97</span>] falling back to the <span class="hljs-keyword">local</span> client version: v1<span class="hljs-number">.14</span><span class="hljs-number">.2</span>
k8s.gcr.<span class="hljs-built_in">io</span>/kube-apiserver:v1<span class="hljs-number">.14</span><span class="hljs-number">.2</span>
k8s.gcr.<span class="hljs-built_in">io</span>/kube-controller-manager:v1<span class="hljs-number">.14</span><span class="hljs-number">.2</span>
k8s.gcr.<span class="hljs-built_in">io</span>/kube-scheduler:v1<span class="hljs-number">.14</span><span class="hljs-number">.2</span>
k8s.gcr.<span class="hljs-built_in">io</span>/kube-proxy:v1<span class="hljs-number">.14</span><span class="hljs-number">.2</span>
k8s.gcr.<span class="hljs-built_in">io</span>/pause:<span class="hljs-number">3.1</span>
k8s.gcr.<span class="hljs-built_in">io</span>/etcd:<span class="hljs-number">3.3</span><span class="hljs-number">.10</span>
k8s.gcr.<span class="hljs-built_in">io</span>/coredns:<span class="hljs-number">1.3</span><span class="hljs-number">.1</span>
[root@master aarch64]# kubeadm config images list I1208 09:21:05.327540 2544 version.go:96] could not fetch a Kubernetes version from the internet: unable to get URL "https://dl.k8s.io/release/stable-1.txt": Get https://storage.googleapis.com/kubernetes-release/release/stable-1.txt: net/http: request canceled (Client.Timeout exceeded while awaiting headers) I1208 09:21:05.327591 2544 version.go:97] falling back to the local client version: v1.14.2 k8s.gcr.io/kube-apiserver:v1.14.2 k8s.gcr.io/kube-controller-manager:v1.14.2 k8s.gcr.io/kube-scheduler:v1.14.2 k8s.gcr.io/kube-proxy:v1.14.2 k8s.gcr.io/pause:3.1 k8s.gcr.io/etcd:3.3.10 k8s.gcr.io/coredns:1.3.1

K8s所需镜像版本有可能会变动,因此查看列表并以此匹配需要下载的Docker镜像,文档中的镜像版本仅做参考。
切忌直接把非arm架构机器上的镜像直接复制过来使用

2.3.2 从DockerHub上下载镜像(速度有点慢)

命令如下所示

<span class="hljs-attribute">docker</span> pull docker.io/mirrorgooglecontainers/kube-apiserver-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> pull docker.io/mirrorgooglecontainers/kube-controller-manager-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> pull docker.io/mirrorgooglecontainers/kube-scheduler-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> pull docker.io/mirrorgooglecontainers/kube-proxy-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> pull docker.io/mirrorgooglecontainers/pause-arm<span class="hljs-number">64</span>:<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> pull docker.io/mirrorgooglecontainers/etcd-arm<span class="hljs-number">64</span>:<span class="hljs-number">3</span>.<span class="hljs-number">3</span>.<span class="hljs-number">10</span>
<span class="hljs-attribute">docker</span> pull docker.io/coredns/coredns:<span class="hljs-number">1</span>.<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> pull docker.io/mirrorgooglecontainers/kube-apiserver-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> pull docker.io/mirrorgooglecontainers/kube-controller-manager-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> pull docker.io/mirrorgooglecontainers/kube-scheduler-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> pull docker.io/mirrorgooglecontainers/kube-proxy-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> pull docker.io/mirrorgooglecontainers/pause-arm<span class="hljs-number">64</span>:<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> pull docker.io/mirrorgooglecontainers/etcd-arm<span class="hljs-number">64</span>:<span class="hljs-number">3</span>.<span class="hljs-number">3</span>.<span class="hljs-number">10</span>
<span class="hljs-attribute">docker</span> pull docker.io/coredns/coredns:<span class="hljs-number">1</span>.<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
docker pull docker.io/mirrorgooglecontainers/kube-apiserver-arm64:v1.14.2 docker pull docker.io/mirrorgooglecontainers/kube-controller-manager-arm64:v1.14.2 docker pull docker.io/mirrorgooglecontainers/kube-scheduler-arm64:v1.14.2 docker pull docker.io/mirrorgooglecontainers/kube-proxy-arm64:v1.14.2 docker pull docker.io/mirrorgooglecontainers/pause-arm64:3.1 docker pull docker.io/mirrorgooglecontainers/etcd-arm64:3.3.10 docker pull docker.io/coredns/coredns:1.3.1

下载完成后可以查看本地镜像

[<span class="hljs-string">root@master</span> <span class="hljs-string">aarch64</span>]<span class="hljs-comment"># docker images</span>
<span class="hljs-string">REPOSITORY</span> <span class="hljs-string">TAG</span> <span class="hljs-string">IMAGE</span> <span class="hljs-string">ID</span> <span class="hljs-string">CREATED</span> <span class="hljs-string">SIZE</span>
<span class="hljs-string">mirrorgooglecontainers/kube-proxy-arm64</span> <span class="hljs-string">v1.14.2</span> <span class="hljs-string">5227f1c3c8a7</span> <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-number">82.</span><span class="hljs-string">7MB</span>
<span class="hljs-string">mirrorgooglecontainers/kube-apiserver-arm64</span> <span class="hljs-string">v1.14.2</span> <span class="hljs-string">091f78b1b081</span> <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-string">207MB</span>
<span class="hljs-string">mirrorgooglecontainers/kube-controller-manager-arm64</span> <span class="hljs-string">v1.14.2</span> <span class="hljs-string">e0fa3d206e49</span> <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-string">155MB</span>
<span class="hljs-string">mirrorgooglecontainers/kube-scheduler-arm64</span> <span class="hljs-string">v1.14.2</span> <span class="hljs-string">485238b2c4a5</span> <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-number">82.</span><span class="hljs-string">2MB</span>
<span class="hljs-string">coredns/coredns</span> <span class="hljs-number">1.3</span><span class="hljs-number">.1</span> <span class="hljs-string">7e8edeee9a1e</span> <span class="hljs-number">23</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-number">37.</span><span class="hljs-string">4MB</span>
<span class="hljs-string">mirrorgooglecontainers/etcd-arm64</span> <span class="hljs-number">3.3</span><span class="hljs-number">.10</span> <span class="hljs-string">ad99d3ead043</span> <span class="hljs-number">2</span> <span class="hljs-string">years</span> <span class="hljs-string">ago</span> <span class="hljs-string">300MB</span>
<span class="hljs-string">mirrorgooglecontainers/pause-arm64</span> <span class="hljs-number">3.1</span> <span class="hljs-string">6cf7c80fe444</span> <span class="hljs-number">2</span> <span class="hljs-string">years</span> <span class="hljs-string">ago</span> <span class="hljs-string">525kB</span>
[<span class="hljs-string">root@master</span> <span class="hljs-string">aarch64</span>]<span class="hljs-comment"># docker images</span>
<span class="hljs-string">REPOSITORY</span>                                             <span class="hljs-string">TAG</span>                 <span class="hljs-string">IMAGE</span> <span class="hljs-string">ID</span>            <span class="hljs-string">CREATED</span>             <span class="hljs-string">SIZE</span>
<span class="hljs-string">mirrorgooglecontainers/kube-proxy-arm64</span>                <span class="hljs-string">v1.14.2</span>             <span class="hljs-string">5227f1c3c8a7</span>        <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-number">82.</span><span class="hljs-string">7MB</span>
<span class="hljs-string">mirrorgooglecontainers/kube-apiserver-arm64</span>            <span class="hljs-string">v1.14.2</span>             <span class="hljs-string">091f78b1b081</span>        <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-string">207MB</span>
<span class="hljs-string">mirrorgooglecontainers/kube-controller-manager-arm64</span>   <span class="hljs-string">v1.14.2</span>             <span class="hljs-string">e0fa3d206e49</span>        <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-string">155MB</span>
<span class="hljs-string">mirrorgooglecontainers/kube-scheduler-arm64</span>            <span class="hljs-string">v1.14.2</span>             <span class="hljs-string">485238b2c4a5</span>        <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-number">82.</span><span class="hljs-string">2MB</span>
<span class="hljs-string">coredns/coredns</span>                                        <span class="hljs-number">1.3</span><span class="hljs-number">.1</span>               <span class="hljs-string">7e8edeee9a1e</span>        <span class="hljs-number">23</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-number">37.</span><span class="hljs-string">4MB</span>
<span class="hljs-string">mirrorgooglecontainers/etcd-arm64</span>                      <span class="hljs-number">3.3</span><span class="hljs-number">.10</span>              <span class="hljs-string">ad99d3ead043</span>        <span class="hljs-number">2</span> <span class="hljs-string">years</span> <span class="hljs-string">ago</span>         <span class="hljs-string">300MB</span>
<span class="hljs-string">mirrorgooglecontainers/pause-arm64</span>                     <span class="hljs-number">3.1</span>                 <span class="hljs-string">6cf7c80fe444</span>        <span class="hljs-number">2</span> <span class="hljs-string">years</span> <span class="hljs-string">ago</span>         <span class="hljs-string">525kB</span>
[root@master aarch64]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mirrorgooglecontainers/kube-proxy-arm64 v1.14.2 5227f1c3c8a7 19 months ago 82.7MB mirrorgooglecontainers/kube-apiserver-arm64 v1.14.2 091f78b1b081 19 months ago 207MB mirrorgooglecontainers/kube-controller-manager-arm64 v1.14.2 e0fa3d206e49 19 months ago 155MB mirrorgooglecontainers/kube-scheduler-arm64 v1.14.2 485238b2c4a5 19 months ago 82.2MB coredns/coredns 1.3.1 7e8edeee9a1e 23 months ago 37.4MB mirrorgooglecontainers/etcd-arm64 3.3.10 ad99d3ead043 2 years ago 300MB mirrorgooglecontainers/pause-arm64 3.1 6cf7c80fe444 2 years ago 525kB

2.3.3 修改已下载的镜像标签。

<span class="hljs-attribute">docker</span> tag mirrorgooglecontainers/kube-apiserver-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span> k<span class="hljs-number">8</span>s.gcr.io/kube-apiserver:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> tag mirrorgooglecontainers/kube-controller-manager-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span> k<span class="hljs-number">8</span>s.gcr.io/kube-controller-manager:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> tag mirrorgooglecontainers/kube-scheduler-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span> k<span class="hljs-number">8</span>s.gcr.io/kube-scheduler:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> tag mirrorgooglecontainers/kube-proxy-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span> k<span class="hljs-number">8</span>s.gcr.io/kube-proxy:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> tag mirrorgooglecontainers/pause-arm<span class="hljs-number">64</span>:<span class="hljs-number">3</span>.<span class="hljs-number">1</span> k<span class="hljs-number">8</span>s.gcr.io/pause:<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> tag mirrorgooglecontainers/etcd-arm<span class="hljs-number">64</span>:<span class="hljs-number">3</span>.<span class="hljs-number">3</span>.<span class="hljs-number">10</span> k<span class="hljs-number">8</span>s.gcr.io/etcd:<span class="hljs-number">3</span>.<span class="hljs-number">3</span>.<span class="hljs-number">10</span>
<span class="hljs-attribute">docker</span> tag coredns/coredns:<span class="hljs-number">1</span>.<span class="hljs-number">3</span>.<span class="hljs-number">1</span> k<span class="hljs-number">8</span>s.gcr.io/coredns:<span class="hljs-number">1</span>.<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> tag mirrorgooglecontainers/kube-apiserver-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span> k<span class="hljs-number">8</span>s.gcr.io/kube-apiserver:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> tag mirrorgooglecontainers/kube-controller-manager-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span> k<span class="hljs-number">8</span>s.gcr.io/kube-controller-manager:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> tag mirrorgooglecontainers/kube-scheduler-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span> k<span class="hljs-number">8</span>s.gcr.io/kube-scheduler:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> tag mirrorgooglecontainers/kube-proxy-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span> k<span class="hljs-number">8</span>s.gcr.io/kube-proxy:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> tag mirrorgooglecontainers/pause-arm<span class="hljs-number">64</span>:<span class="hljs-number">3</span>.<span class="hljs-number">1</span> k<span class="hljs-number">8</span>s.gcr.io/pause:<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> tag mirrorgooglecontainers/etcd-arm<span class="hljs-number">64</span>:<span class="hljs-number">3</span>.<span class="hljs-number">3</span>.<span class="hljs-number">10</span> k<span class="hljs-number">8</span>s.gcr.io/etcd:<span class="hljs-number">3</span>.<span class="hljs-number">3</span>.<span class="hljs-number">10</span>
<span class="hljs-attribute">docker</span> tag coredns/coredns:<span class="hljs-number">1</span>.<span class="hljs-number">3</span>.<span class="hljs-number">1</span> k<span class="hljs-number">8</span>s.gcr.io/coredns:<span class="hljs-number">1</span>.<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
docker tag mirrorgooglecontainers/kube-apiserver-arm64:v1.14.2 k8s.gcr.io/kube-apiserver:v1.14.2 docker tag mirrorgooglecontainers/kube-controller-manager-arm64:v1.14.2 k8s.gcr.io/kube-controller-manager:v1.14.2 docker tag mirrorgooglecontainers/kube-scheduler-arm64:v1.14.2 k8s.gcr.io/kube-scheduler:v1.14.2 docker tag mirrorgooglecontainers/kube-proxy-arm64:v1.14.2 k8s.gcr.io/kube-proxy:v1.14.2 docker tag mirrorgooglecontainers/pause-arm64:3.1 k8s.gcr.io/pause:3.1 docker tag mirrorgooglecontainers/etcd-arm64:3.3.10 k8s.gcr.io/etcd:3.3.10 docker tag coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

说明:
需要将镜像repository修改与kubeadm列出的镜像名保持一致。

2.3.4 查看K8s的Docker镜像组件

<span class="hljs-attribute">docker</span> images | grep k<span class="hljs-number">8</span>s
<span class="hljs-attribute">docker</span> images | grep k<span class="hljs-number">8</span>s
docker images | grep k8s
[<span class="hljs-string">root@master</span> <span class="hljs-string">aarch64</span>]<span class="hljs-comment"># docker images | grep k8s</span>
<span class="hljs-string">k8s.gcr.io/kube-apiserver</span> <span class="hljs-string">v1.14.2</span> <span class="hljs-string">091f78b1b081</span> <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-string">207MB</span>
<span class="hljs-string">k8s.gcr.io/kube-controller-manager</span> <span class="hljs-string">v1.14.2</span> <span class="hljs-string">e0fa3d206e49</span> <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-string">155MB</span>
<span class="hljs-string">k8s.gcr.io/kube-scheduler</span> <span class="hljs-string">v1.14.2</span> <span class="hljs-string">485238b2c4a5</span> <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-number">82.</span><span class="hljs-string">2MB</span>
<span class="hljs-string">k8s.gcr.io/kube-proxy</span> <span class="hljs-string">v1.14.2</span> <span class="hljs-string">5227f1c3c8a7</span> <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-number">82.</span><span class="hljs-string">7MB</span>
<span class="hljs-string">k8s.gcr.io/coredns</span> <span class="hljs-number">1.3</span><span class="hljs-number">.1</span> <span class="hljs-string">7e8edeee9a1e</span> <span class="hljs-number">23</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-number">37.</span><span class="hljs-string">4MB</span>
<span class="hljs-string">k8s.gcr.io/etcd</span> <span class="hljs-number">3.3</span><span class="hljs-number">.10</span> <span class="hljs-string">ad99d3ead043</span> <span class="hljs-number">2</span> <span class="hljs-string">years</span> <span class="hljs-string">ago</span> <span class="hljs-string">300MB</span>
<span class="hljs-string">k8s.gcr.io/pause</span> <span class="hljs-number">3.1</span> <span class="hljs-string">6cf7c80fe444</span> <span class="hljs-number">2</span> <span class="hljs-string">years</span> <span class="hljs-string">ago</span> <span class="hljs-string">525kB</span>
[<span class="hljs-string">root@master</span> <span class="hljs-string">aarch64</span>]<span class="hljs-comment"># docker images | grep k8s</span>
<span class="hljs-string">k8s.gcr.io/kube-apiserver</span>                              <span class="hljs-string">v1.14.2</span>             <span class="hljs-string">091f78b1b081</span>        <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-string">207MB</span>
<span class="hljs-string">k8s.gcr.io/kube-controller-manager</span>                     <span class="hljs-string">v1.14.2</span>             <span class="hljs-string">e0fa3d206e49</span>        <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-string">155MB</span>
<span class="hljs-string">k8s.gcr.io/kube-scheduler</span>                              <span class="hljs-string">v1.14.2</span>             <span class="hljs-string">485238b2c4a5</span>        <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-number">82.</span><span class="hljs-string">2MB</span>
<span class="hljs-string">k8s.gcr.io/kube-proxy</span>                                  <span class="hljs-string">v1.14.2</span>             <span class="hljs-string">5227f1c3c8a7</span>        <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-number">82.</span><span class="hljs-string">7MB</span>
<span class="hljs-string">k8s.gcr.io/coredns</span>                                     <span class="hljs-number">1.3</span><span class="hljs-number">.1</span>               <span class="hljs-string">7e8edeee9a1e</span>        <span class="hljs-number">23</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-number">37.</span><span class="hljs-string">4MB</span>
<span class="hljs-string">k8s.gcr.io/etcd</span>                                        <span class="hljs-number">3.3</span><span class="hljs-number">.10</span>              <span class="hljs-string">ad99d3ead043</span>        <span class="hljs-number">2</span> <span class="hljs-string">years</span> <span class="hljs-string">ago</span>         <span class="hljs-string">300MB</span>
<span class="hljs-string">k8s.gcr.io/pause</span>                                       <span class="hljs-number">3.1</span>                 <span class="hljs-string">6cf7c80fe444</span>        <span class="hljs-number">2</span> <span class="hljs-string">years</span> <span class="hljs-string">ago</span>         <span class="hljs-string">525kB</span>
[root@master aarch64]# docker images | grep k8s k8s.gcr.io/kube-apiserver v1.14.2 091f78b1b081 19 months ago 207MB k8s.gcr.io/kube-controller-manager v1.14.2 e0fa3d206e49 19 months ago 155MB k8s.gcr.io/kube-scheduler v1.14.2 485238b2c4a5 19 months ago 82.2MB k8s.gcr.io/kube-proxy v1.14.2 5227f1c3c8a7 19 months ago 82.7MB k8s.gcr.io/coredns 1.3.1 7e8edeee9a1e 23 months ago 37.4MB k8s.gcr.io/etcd 3.3.10 ad99d3ead043 2 years ago 300MB k8s.gcr.io/pause 3.1 6cf7c80fe444 2 years ago 525kB

2.3.5 删除旧镜像。

命令如下所示

<span class="hljs-attribute">docker</span> rmi mirrorgooglecontainers/kube-apiserver-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> rmi mirrorgooglecontainers/kube-controller-manager-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> rmi mirrorgooglecontainers/kube-scheduler-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> rmi mirrorgooglecontainers/kube-proxy-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> rmi mirrorgooglecontainers/pause-arm<span class="hljs-number">64</span>:<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> rmi mirrorgooglecontainers/etcd-arm<span class="hljs-number">64</span>:<span class="hljs-number">3</span>.<span class="hljs-number">3</span>.<span class="hljs-number">10</span>
<span class="hljs-attribute">docker</span> rmi coredns/coredns:<span class="hljs-number">1</span>.<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> rmi mirrorgooglecontainers/kube-apiserver-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> rmi mirrorgooglecontainers/kube-controller-manager-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> rmi mirrorgooglecontainers/kube-scheduler-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> rmi mirrorgooglecontainers/kube-proxy-arm<span class="hljs-number">64</span>:v<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>
<span class="hljs-attribute">docker</span> rmi mirrorgooglecontainers/pause-arm<span class="hljs-number">64</span>:<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> rmi mirrorgooglecontainers/etcd-arm<span class="hljs-number">64</span>:<span class="hljs-number">3</span>.<span class="hljs-number">3</span>.<span class="hljs-number">10</span>
<span class="hljs-attribute">docker</span> rmi coredns/coredns:<span class="hljs-number">1</span>.<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
docker rmi mirrorgooglecontainers/kube-apiserver-arm64:v1.14.2 docker rmi mirrorgooglecontainers/kube-controller-manager-arm64:v1.14.2 docker rmi mirrorgooglecontainers/kube-scheduler-arm64:v1.14.2 docker rmi mirrorgooglecontainers/kube-proxy-arm64:v1.14.2 docker rmi mirrorgooglecontainers/pause-arm64:3.1 docker rmi mirrorgooglecontainers/etcd-arm64:3.3.10 docker rmi coredns/coredns:1.3.1

删除后再次查看本地镜像

[<span class="hljs-string">root@master</span> <span class="hljs-string">aarch64</span>]<span class="hljs-comment"># docker images</span>
<span class="hljs-string">REPOSITORY</span> <span class="hljs-string">TAG</span> <span class="hljs-string">IMAGE</span> <span class="hljs-string">ID</span> <span class="hljs-string">CREATED</span> <span class="hljs-string">SIZE</span>
<span class="hljs-string">k8s.gcr.io/kube-scheduler</span> <span class="hljs-string">v1.14.2</span> <span class="hljs-string">485238b2c4a5</span> <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-number">82.</span><span class="hljs-string">2MB</span>
<span class="hljs-string">k8s.gcr.io/kube-proxy</span> <span class="hljs-string">v1.14.2</span> <span class="hljs-string">5227f1c3c8a7</span> <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-number">82.</span><span class="hljs-string">7MB</span>
<span class="hljs-string">k8s.gcr.io/kube-apiserver</span> <span class="hljs-string">v1.14.2</span> <span class="hljs-string">091f78b1b081</span> <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-string">207MB</span>
<span class="hljs-string">k8s.gcr.io/kube-controller-manager</span> <span class="hljs-string">v1.14.2</span> <span class="hljs-string">e0fa3d206e49</span> <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-string">155MB</span>
<span class="hljs-string">k8s.gcr.io/coredns</span> <span class="hljs-number">1.3</span><span class="hljs-number">.1</span> <span class="hljs-string">7e8edeee9a1e</span> <span class="hljs-number">23</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span> <span class="hljs-number">37.</span><span class="hljs-string">4MB</span>
<span class="hljs-string">k8s.gcr.io/etcd</span> <span class="hljs-number">3.3</span><span class="hljs-number">.10</span> <span class="hljs-string">ad99d3ead043</span> <span class="hljs-number">2</span> <span class="hljs-string">years</span> <span class="hljs-string">ago</span> <span class="hljs-string">300MB</span>
<span class="hljs-string">k8s.gcr.io/pause</span> <span class="hljs-number">3.1</span> <span class="hljs-string">6cf7c80fe444</span> <span class="hljs-number">2</span> <span class="hljs-string">years</span> <span class="hljs-string">ago</span> <span class="hljs-string">525kB</span>
[<span class="hljs-string">root@master</span> <span class="hljs-string">aarch64</span>]<span class="hljs-comment"># docker images</span>
<span class="hljs-string">REPOSITORY</span>                           <span class="hljs-string">TAG</span>                 <span class="hljs-string">IMAGE</span> <span class="hljs-string">ID</span>            <span class="hljs-string">CREATED</span>             <span class="hljs-string">SIZE</span>
<span class="hljs-string">k8s.gcr.io/kube-scheduler</span>            <span class="hljs-string">v1.14.2</span>             <span class="hljs-string">485238b2c4a5</span>        <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-number">82.</span><span class="hljs-string">2MB</span>
<span class="hljs-string">k8s.gcr.io/kube-proxy</span>                <span class="hljs-string">v1.14.2</span>             <span class="hljs-string">5227f1c3c8a7</span>        <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-number">82.</span><span class="hljs-string">7MB</span>
<span class="hljs-string">k8s.gcr.io/kube-apiserver</span>            <span class="hljs-string">v1.14.2</span>             <span class="hljs-string">091f78b1b081</span>        <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-string">207MB</span>
<span class="hljs-string">k8s.gcr.io/kube-controller-manager</span>   <span class="hljs-string">v1.14.2</span>             <span class="hljs-string">e0fa3d206e49</span>        <span class="hljs-number">19</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-string">155MB</span>
<span class="hljs-string">k8s.gcr.io/coredns</span>                   <span class="hljs-number">1.3</span><span class="hljs-number">.1</span>               <span class="hljs-string">7e8edeee9a1e</span>        <span class="hljs-number">23</span> <span class="hljs-string">months</span> <span class="hljs-string">ago</span>       <span class="hljs-number">37.</span><span class="hljs-string">4MB</span>
<span class="hljs-string">k8s.gcr.io/etcd</span>                      <span class="hljs-number">3.3</span><span class="hljs-number">.10</span>              <span class="hljs-string">ad99d3ead043</span>        <span class="hljs-number">2</span> <span class="hljs-string">years</span> <span class="hljs-string">ago</span>         <span class="hljs-string">300MB</span>
<span class="hljs-string">k8s.gcr.io/pause</span>                     <span class="hljs-number">3.1</span>                 <span class="hljs-string">6cf7c80fe444</span>        <span class="hljs-number">2</span> <span class="hljs-string">years</span> <span class="hljs-string">ago</span>         <span class="hljs-string">525kB</span>
[root@master aarch64]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE k8s.gcr.io/kube-scheduler v1.14.2 485238b2c4a5 19 months ago 82.2MB k8s.gcr.io/kube-proxy v1.14.2 5227f1c3c8a7 19 months ago 82.7MB k8s.gcr.io/kube-apiserver v1.14.2 091f78b1b081 19 months ago 207MB k8s.gcr.io/kube-controller-manager v1.14.2 e0fa3d206e49 19 months ago 155MB k8s.gcr.io/coredns 1.3.1 7e8edeee9a1e 23 months ago 37.4MB k8s.gcr.io/etcd 3.3.10 ad99d3ead043 2 years ago 300MB k8s.gcr.io/pause 3.1 6cf7c80fe444 2 years ago 525kB

三、部署K8S集群

3.1 配置hosts文件

主节点和计算节点都需要配置hosts文件。
执行vi /etc/hosts命令,修改hosts文件,添加集群所有节点的ip及hostname信息。

<span class="hljs-attribute">192</span>.<span class="hljs-number">168</span>.<span class="hljs-number">0</span>.<span class="hljs-number">113</span> master master
<span class="hljs-attribute">192</span>.<span class="hljs-number">168</span>.<span class="hljs-number">0</span>.<span class="hljs-number">226</span> node<span class="hljs-number">1</span> node<span class="hljs-number">1</span>
<span class="hljs-attribute">192</span>.<span class="hljs-number">168</span>.<span class="hljs-number">0</span>.<span class="hljs-number">113</span>  master master
<span class="hljs-attribute">192</span>.<span class="hljs-number">168</span>.<span class="hljs-number">0</span>.<span class="hljs-number">226</span>  node<span class="hljs-number">1</span> node<span class="hljs-number">1</span>
192.168.0.113 master master 192.168.0.226 node1 node1

每台节点的/etc/hosts文件都要修改。

3.2 配置主节点(master)

说明:重复搭建集群时,请先执行kubeadm reset命令,清除旧的K8s集群设置。
在主节点上执行集群初始化命令。

3.2.1 在主节点上执行集群初始化命令

<span class="hljs-attribute">kubeadm</span> init --kubernetes-version=<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span> --service-cidr=<span class="hljs-number">10.1.0.0</span>/<span class="hljs-number">16</span> --pod-network-cidr=<span class="hljs-number">10.244.0.0</span>/<span class="hljs-number">16</span>
<span class="hljs-attribute">kubeadm</span> init --kubernetes-version=<span class="hljs-number">1</span>.<span class="hljs-number">14</span>.<span class="hljs-number">2</span>  --service-cidr=<span class="hljs-number">10.1.0.0</span>/<span class="hljs-number">16</span> --pod-network-cidr=<span class="hljs-number">10.244.0.0</span>/<span class="hljs-number">16</span>
kubeadm init --kubernetes-version=1.14.2 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16

当看到如下信息时代表初始化成功

Your Kubernetes control-plane has initialized successfully!
To <span class="hljs-keyword">start</span> <span class="hljs-keyword">using</span> your cluster, you need <span class="hljs-keyword">to</span> run the <span class="hljs-keyword">following</span> <span class="hljs-keyword">as</span> a regular <span class="hljs-keyword">user</span>:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(<span class="hljs-keyword">id</span> -u):$(<span class="hljs-keyword">id</span> -g) $HOME/.kube/config
You should <span class="hljs-keyword">now</span> deploy a pod network <span class="hljs-keyword">to</span> the cluster.
Run <span class="hljs-string">"kubectl apply -f [podnetwork].yaml"</span> <span class="hljs-keyword">with</span> one <span class="hljs-keyword">of</span> the options listed <span class="hljs-keyword">at</span>:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
<span class="hljs-keyword">Then</span> you can <span class="hljs-keyword">join</span> <span class="hljs-keyword">any</span> <span class="hljs-built_in">number</span> <span class="hljs-keyword">of</span> worker nodes <span class="hljs-keyword">by</span> running the <span class="hljs-keyword">following</span> <span class="hljs-keyword">on</span> <span class="hljs-keyword">each</span> <span class="hljs-keyword">as</span> root:
kubeadm <span class="hljs-keyword">join</span> <span class="hljs-number">192.168</span><span class="hljs-number">.0</span><span class="hljs-number">.113</span>:<span class="hljs-number">6443</span> <span class="hljs-comment">--token all7y6.hxs2yemaucku9dct \</span>
<span class="hljs-comment">--discovery-token-ca-cert-hash sha256:7e1b11d2715fd87d8aeec9a1924c87b68d36da35392ccee57b0581993dfeb821 </span>
Your Kubernetes control-plane has initialized successfully!

To <span class="hljs-keyword">start</span> <span class="hljs-keyword">using</span> your cluster, you need <span class="hljs-keyword">to</span> run the <span class="hljs-keyword">following</span> <span class="hljs-keyword">as</span> a regular <span class="hljs-keyword">user</span>:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(<span class="hljs-keyword">id</span> -u):$(<span class="hljs-keyword">id</span> -g) $HOME/.kube/config

You should <span class="hljs-keyword">now</span> deploy a pod network <span class="hljs-keyword">to</span> the cluster.
Run <span class="hljs-string">"kubectl apply -f [podnetwork].yaml"</span> <span class="hljs-keyword">with</span> one <span class="hljs-keyword">of</span> the options listed <span class="hljs-keyword">at</span>:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

<span class="hljs-keyword">Then</span> you can <span class="hljs-keyword">join</span> <span class="hljs-keyword">any</span> <span class="hljs-built_in">number</span> <span class="hljs-keyword">of</span> worker nodes <span class="hljs-keyword">by</span> running the <span class="hljs-keyword">following</span> <span class="hljs-keyword">on</span> <span class="hljs-keyword">each</span> <span class="hljs-keyword">as</span> root:

kubeadm <span class="hljs-keyword">join</span> <span class="hljs-number">192.168</span><span class="hljs-number">.0</span><span class="hljs-number">.113</span>:<span class="hljs-number">6443</span> <span class="hljs-comment">--token all7y6.hxs2yemaucku9dct \</span>
    <span class="hljs-comment">--discovery-token-ca-cert-hash sha256:7e1b11d2715fd87d8aeec9a1924c87b68d36da35392ccee57b0581993dfeb821 </span>
Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ Then you can join any number of worker nodes by running the following on each as root: kubeadm join 192.168.0.113:6443 --token all7y6.hxs2yemaucku9dct \ --discovery-token-ca-cert-hash sha256:7e1b11d2715fd87d8aeec9a1924c87b68d36da35392ccee57b0581993dfeb821

黄框信息表示主节点配置集群需要执行的命令,红框信息表示计算节点加入集群的token命令,请保存该段命令。

ARM架构安装Kubernetes集群-牛魔博客

说明:

  1. 计算节点不需要执行集群初始化操作。
  2. 如果在主节点初始化的时候提示:
    /proc/sys/net/bridge/bridge-nf-call-iptables contents are not set to 1
    可以通过执行echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables命令将其置为1(vim不可修改此文件)。
  3. 执行该操作时,建议排查是否有配置代理(执行env查看),避免kubeadm init初始化超时失败,删除代理的操作:
    export -n http_proxy
    export -n https_proxy
    export -n no_proxy
    --pod-network-cidr > 3.选项用于指定kubernetes网络可以使用的IP地址段,由于后续使用Flannel网络插件,该插件固定使用的IP段为:10.244.0.0/16 。

ARM架构安装Kubernetes集群-牛魔博客

3.2.2 配置集群

mkdir <span class="hljs-literal">-p</span> <span class="hljs-variable">$HOME</span>/.kube
sudo <span class="hljs-built_in">cp</span> <span class="hljs-literal">-i</span> /etc/kubernetes/admin.conf <span class="hljs-variable">$HOME</span>/.kube/config
sudo chown <span class="hljs-variable">$</span>(id <span class="hljs-literal">-u</span>):<span class="hljs-variable">$</span>(id <span class="hljs-literal">-g</span>) <span class="hljs-variable">$HOME</span>/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
mkdir <span class="hljs-literal">-p</span> <span class="hljs-variable">$HOME</span>/.kube
sudo <span class="hljs-built_in">cp</span> <span class="hljs-literal">-i</span> /etc/kubernetes/admin.conf <span class="hljs-variable">$HOME</span>/.kube/config
sudo chown <span class="hljs-variable">$</span>(id <span class="hljs-literal">-u</span>):<span class="hljs-variable">$</span>(id <span class="hljs-literal">-g</span>) <span class="hljs-variable">$HOME</span>/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=/etc/kubernetes/admin.conf

3.2.3 在主节点查看集群节点信息。

kubectl <span class="hljs-keyword">get</span> node
kubectl <span class="hljs-keyword">get</span> node
kubectl get node
<span class="hljs-selector-attr">[root@master aarch64]</span># <span class="hljs-selector-tag">kubectl</span> <span class="hljs-selector-tag">get</span> <span class="hljs-selector-tag">nodes</span>
<span class="hljs-selector-tag">NAME</span> <span class="hljs-selector-tag">STATUS</span> <span class="hljs-selector-tag">ROLES</span> <span class="hljs-selector-tag">AGE</span> <span class="hljs-selector-tag">VERSION</span>
<span class="hljs-selector-tag">master</span> <span class="hljs-selector-tag">NotReady</span> <span class="hljs-selector-tag">master</span> 97<span class="hljs-selector-tag">s</span> <span class="hljs-selector-tag">v1</span><span class="hljs-selector-class">.14</span><span class="hljs-selector-class">.2</span>
<span class="hljs-selector-attr">[root@master aarch64]</span># <span class="hljs-selector-tag">kubectl</span> <span class="hljs-selector-tag">get</span> <span class="hljs-selector-tag">nodes</span>
<span class="hljs-selector-tag">NAME</span>     <span class="hljs-selector-tag">STATUS</span>     <span class="hljs-selector-tag">ROLES</span>    <span class="hljs-selector-tag">AGE</span>   <span class="hljs-selector-tag">VERSION</span>
<span class="hljs-selector-tag">master</span>   <span class="hljs-selector-tag">NotReady</span>   <span class="hljs-selector-tag">master</span>   97<span class="hljs-selector-tag">s</span>   <span class="hljs-selector-tag">v1</span><span class="hljs-selector-class">.14</span><span class="hljs-selector-class">.2</span>
[root@master aarch64]# kubectl get nodes NAME STATUS ROLES AGE VERSION master NotReady master 97s v1.14.2

3.2.4 保存主节点生成的加入集群信息。

该信息在成功初始化主节点后生成并打印,集群信息如下所示:

<span class="hljs-selector-tag">kubeadm</span> <span class="hljs-selector-tag">join</span> 192<span class="hljs-selector-class">.168</span><span class="hljs-selector-class">.0</span><span class="hljs-selector-class">.113</span><span class="hljs-selector-pseudo">:6443</span> <span class="hljs-selector-tag">--token</span> <span class="hljs-selector-tag">all7y6</span><span class="hljs-selector-class">.hxs2yemaucku9dct</span> \
<span class="hljs-selector-tag">--discovery-token-ca-cert-hash</span> <span class="hljs-selector-tag">sha256</span><span class="hljs-selector-pseudo">:7e1b11d2715fd87d8aeec9a1924c87b68d36da35392ccee57b0581993dfeb821</span>
<span class="hljs-selector-tag">kubeadm</span> <span class="hljs-selector-tag">join</span> 192<span class="hljs-selector-class">.168</span><span class="hljs-selector-class">.0</span><span class="hljs-selector-class">.113</span><span class="hljs-selector-pseudo">:6443</span> <span class="hljs-selector-tag">--token</span> <span class="hljs-selector-tag">all7y6</span><span class="hljs-selector-class">.hxs2yemaucku9dct</span> \
    <span class="hljs-selector-tag">--discovery-token-ca-cert-hash</span> <span class="hljs-selector-tag">sha256</span><span class="hljs-selector-pseudo">:7e1b11d2715fd87d8aeec9a1924c87b68d36da35392ccee57b0581993dfeb821</span> 
kubeadm join 192.168.0.113:6443 --token all7y6.hxs2yemaucku9dct \ --discovery-token-ca-cert-hash sha256:7e1b11d2715fd87d8aeec9a1924c87b68d36da35392ccee57b0581993dfeb821

注意:
该token命令可以用于二十四小时内计算节点加入集群,若token超时,可在K8S主节点通过kubeadm token create --print-join-command命令进行重新生成

3.3 配置计算点(node1)

3.3.1 计算节点加入集群

计算节点执行

<span class="hljs-selector-tag">kubeadm</span> <span class="hljs-selector-tag">join</span> 192<span class="hljs-selector-class">.168</span><span class="hljs-selector-class">.0</span><span class="hljs-selector-class">.113</span><span class="hljs-selector-pseudo">:6443</span> <span class="hljs-selector-tag">--token</span> <span class="hljs-selector-tag">all7y6</span><span class="hljs-selector-class">.hxs2yemaucku9dct</span> \
<span class="hljs-selector-tag">--discovery-token-ca-cert-hash</span> <span class="hljs-selector-tag">sha256</span><span class="hljs-selector-pseudo">:7e1b11d2715fd87d8aeec9a1924c87b68d36da35392ccee57b0581993dfeb821</span>
<span class="hljs-selector-tag">kubeadm</span> <span class="hljs-selector-tag">join</span> 192<span class="hljs-selector-class">.168</span><span class="hljs-selector-class">.0</span><span class="hljs-selector-class">.113</span><span class="hljs-selector-pseudo">:6443</span> <span class="hljs-selector-tag">--token</span> <span class="hljs-selector-tag">all7y6</span><span class="hljs-selector-class">.hxs2yemaucku9dct</span> \
    <span class="hljs-selector-tag">--discovery-token-ca-cert-hash</span> <span class="hljs-selector-tag">sha256</span><span class="hljs-selector-pseudo">:7e1b11d2715fd87d8aeec9a1924c87b68d36da35392ccee57b0581993dfeb821</span>
kubeadm join 192.168.0.113:6443 --token all7y6.hxs2yemaucku9dct \ --discovery-token-ca-cert-hash sha256:7e1b11d2715fd87d8aeec9a1924c87b68d36da35392ccee57b0581993dfeb821

3.3.2 等待1分钟后,在主节点(master)执行kubectl get nodes

<span class="hljs-selector-attr">[root@master opt]</span># <span class="hljs-selector-tag">kubectl</span> <span class="hljs-selector-tag">get</span> <span class="hljs-selector-tag">nodes</span>
<span class="hljs-selector-tag">NAME</span> <span class="hljs-selector-tag">STATUS</span> <span class="hljs-selector-tag">ROLES</span> <span class="hljs-selector-tag">AGE</span> <span class="hljs-selector-tag">VERSION</span>
<span class="hljs-selector-tag">master</span> <span class="hljs-selector-tag">Ready</span> <span class="hljs-selector-tag">master</span> 3<span class="hljs-selector-tag">h7m</span> <span class="hljs-selector-tag">v1</span><span class="hljs-selector-class">.14</span><span class="hljs-selector-class">.2</span>
<span class="hljs-selector-tag">node1</span> <span class="hljs-selector-tag">NotReady</span> <<span class="hljs-selector-tag">none</span>> 83<span class="hljs-selector-tag">s</span> <span class="hljs-selector-tag">v1</span><span class="hljs-selector-class">.14</span><span class="hljs-selector-class">.2</span>
<span class="hljs-selector-attr">[root@master opt]</span># <span class="hljs-selector-tag">kubectl</span> <span class="hljs-selector-tag">get</span> <span class="hljs-selector-tag">nodes</span>
<span class="hljs-selector-tag">NAME</span>     <span class="hljs-selector-tag">STATUS</span>     <span class="hljs-selector-tag">ROLES</span>    <span class="hljs-selector-tag">AGE</span>    <span class="hljs-selector-tag">VERSION</span>
<span class="hljs-selector-tag">master</span>   <span class="hljs-selector-tag">Ready</span>      <span class="hljs-selector-tag">master</span>   3<span class="hljs-selector-tag">h7m</span>   <span class="hljs-selector-tag">v1</span><span class="hljs-selector-class">.14</span><span class="hljs-selector-class">.2</span>
<span class="hljs-selector-tag">node1</span>    <span class="hljs-selector-tag">NotReady</span>   <<span class="hljs-selector-tag">none</span>>   83<span class="hljs-selector-tag">s</span>    <span class="hljs-selector-tag">v1</span><span class="hljs-selector-class">.14</span><span class="hljs-selector-class">.2</span>
[root@master opt]# kubectl get nodes NAME STATUS ROLES AGE VERSION master Ready master 3h7m v1.14.2 node1 NotReady <none> 83s v1.14.2

3.3.3 在主节点和计算节点上查看kubelet服务状态

systemctl <span class="hljs-built_in">status</span> kubelet
systemctl <span class="hljs-built_in">status</span> kubelet
systemctl status kubelet

主节点

ARM架构安装Kubernetes集群-牛魔博客

子节点

ARM架构安装Kubernetes集群-牛魔博客

3.4 添加Flannel网络插件

3.4.1 在主节点上执行如下命令安装Flannel网络插件。

当前版本1.14版本执行(如果无法下载,可以查看网盘附件进行本地化安装,下载地址:https://pan.baidu.com/s/1L1epcWiEI7v2C4bHo2nx3Q 提取码:1fsh)

kubectl apply -f <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/gitee.com/mirrors</span><span class="hljs-regexp">/flannel/blob</span><span class="hljs-regexp">/master/</span>Documentation/kube-flannel-old.yaml
kubectl apply -f <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/gitee.com/mirrors</span><span class="hljs-regexp">/flannel/blob</span><span class="hljs-regexp">/master/</span>Documentation/kube-flannel-old.yaml
kubectl apply -f https://gitee.com/mirrors/flannel/blob/master/Documentation/kube-flannel-old.yaml

注意:对于 Kubernetes 版本 v1.17+

kubectl apply -f <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/raw.githubusercontent.com/coreos</span><span class="hljs-regexp">/flannel/master</span><span class="hljs-regexp">/Documentation/kube</span>-flannel.yml
kubectl apply -f <span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/raw.githubusercontent.com/coreos</span><span class="hljs-regexp">/flannel/master</span><span class="hljs-regexp">/Documentation/kube</span>-flannel.yml
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

3.4.2 安装完成后,执行kubectl get pod -n kube-system,看到kube-flannel正常运行即可

[<span class="hljs-string">root@master</span> <span class="hljs-string">opt</span>]<span class="hljs-comment"># kubectl get pod -n kube-system</span>
<span class="hljs-string">NAME</span> <span class="hljs-string">READY</span> <span class="hljs-string">STATUS</span> <span class="hljs-string">RESTARTS</span> <span class="hljs-string">AGE</span>
<span class="hljs-string">coredns-fb8b8dccf-sgzqj</span> <span class="hljs-number">1</span><span class="hljs-string">/1</span> <span class="hljs-string">Running</span> <span class="hljs-number">0</span> <span class="hljs-string">38m</span>
<span class="hljs-string">coredns-fb8b8dccf-xpx5x</span> <span class="hljs-number">1</span><span class="hljs-string">/1</span> <span class="hljs-string">Running</span> <span class="hljs-number">0</span> <span class="hljs-string">38m</span>
<span class="hljs-string">etcd-master</span> <span class="hljs-number">1</span><span class="hljs-string">/1</span> <span class="hljs-string">Running</span> <span class="hljs-number">0</span> <span class="hljs-string">37m</span>
<span class="hljs-string">kube-apiserver-master</span> <span class="hljs-number">1</span><span class="hljs-string">/1</span> <span class="hljs-string">Running</span> <span class="hljs-number">0</span> <span class="hljs-string">37m</span>
<span class="hljs-string">kube-controller-manager-master</span> <span class="hljs-number">1</span><span class="hljs-string">/1</span> <span class="hljs-string">Running</span> <span class="hljs-number">0</span> <span class="hljs-string">37m</span>
<span class="hljs-string">kube-flannel-ds-arm64-wxc6f</span> <span class="hljs-number">1</span><span class="hljs-string">/1</span> <span class="hljs-string">Running</span> <span class="hljs-number">0</span> <span class="hljs-string">98s</span>
<span class="hljs-string">kube-proxy-tzb4r</span> <span class="hljs-number">1</span><span class="hljs-string">/1</span> <span class="hljs-string">Running</span> <span class="hljs-number">0</span> <span class="hljs-string">38m</span>
<span class="hljs-string">kube-scheduler-master</span> <span class="hljs-number">1</span><span class="hljs-string">/1</span> <span class="hljs-string">Running</span> <span class="hljs-number">0</span> <span class="hljs-string">37m</span>
[<span class="hljs-string">root@master</span> <span class="hljs-string">opt</span>]<span class="hljs-comment"># kubectl get pod -n kube-system</span>
<span class="hljs-string">NAME</span>                             <span class="hljs-string">READY</span>   <span class="hljs-string">STATUS</span>    <span class="hljs-string">RESTARTS</span>   <span class="hljs-string">AGE</span>
<span class="hljs-string">coredns-fb8b8dccf-sgzqj</span>          <span class="hljs-number">1</span><span class="hljs-string">/1</span>     <span class="hljs-string">Running</span>   <span class="hljs-number">0</span>          <span class="hljs-string">38m</span>
<span class="hljs-string">coredns-fb8b8dccf-xpx5x</span>          <span class="hljs-number">1</span><span class="hljs-string">/1</span>     <span class="hljs-string">Running</span>   <span class="hljs-number">0</span>          <span class="hljs-string">38m</span>
<span class="hljs-string">etcd-master</span>                      <span class="hljs-number">1</span><span class="hljs-string">/1</span>     <span class="hljs-string">Running</span>   <span class="hljs-number">0</span>          <span class="hljs-string">37m</span>
<span class="hljs-string">kube-apiserver-master</span>            <span class="hljs-number">1</span><span class="hljs-string">/1</span>     <span class="hljs-string">Running</span>   <span class="hljs-number">0</span>          <span class="hljs-string">37m</span>
<span class="hljs-string">kube-controller-manager-master</span>   <span class="hljs-number">1</span><span class="hljs-string">/1</span>     <span class="hljs-string">Running</span>   <span class="hljs-number">0</span>          <span class="hljs-string">37m</span>
<span class="hljs-string">kube-flannel-ds-arm64-wxc6f</span>      <span class="hljs-number">1</span><span class="hljs-string">/1</span>     <span class="hljs-string">Running</span>   <span class="hljs-number">0</span>          <span class="hljs-string">98s</span>
<span class="hljs-string">kube-proxy-tzb4r</span>                 <span class="hljs-number">1</span><span class="hljs-string">/1</span>     <span class="hljs-string">Running</span>   <span class="hljs-number">0</span>          <span class="hljs-string">38m</span>
<span class="hljs-string">kube-scheduler-master</span>            <span class="hljs-number">1</span><span class="hljs-string">/1</span>     <span class="hljs-string">Running</span>   <span class="hljs-number">0</span>          <span class="hljs-string">37m</span>
[root@master opt]# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-fb8b8dccf-sgzqj 1/1 Running 0 38m coredns-fb8b8dccf-xpx5x 1/1 Running 0 38m etcd-master 1/1 Running 0 37m kube-apiserver-master 1/1 Running 0 37m kube-controller-manager-master 1/1 Running 0 37m kube-flannel-ds-arm64-wxc6f 1/1 Running 0 98s kube-proxy-tzb4r 1/1 Running 0 38m kube-scheduler-master 1/1 Running 0 37m

这样我们K8S集群就搭建完成了。

四、(选配)安装Kubernetes Dashboard插件

主节点上操作即可

4.1 用openssl生成自签证书(有第三方证书可跳过)

生成证书请求的key

<span class="hljs-attribute">openssl</span> genrsa -out dashboard.key <span class="hljs-number">2048</span>
<span class="hljs-attribute">openssl</span> genrsa -out dashboard.key <span class="hljs-number">2048</span>
openssl genrsa -out dashboard.key 2048

生成证书请求

openssl req -<span class="hljs-keyword">new</span> -out dashboard.csr -<span class="hljs-keyword">key</span> dashboard.<span class="hljs-keyword">key</span> -subj <span class="hljs-comment">'/CN=<span class="hljs-doctag"><your_ip></span>'</span>
openssl req -<span class="hljs-keyword">new</span> -out dashboard.csr -<span class="hljs-keyword">key</span> dashboard.<span class="hljs-keyword">key</span> -subj <span class="hljs-comment">'/CN=<span class="hljs-doctag"><your_ip></span>'</span>
openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN=<your_ip>'

<your_ip>换成自己的ip或域名。

生成自签证书

<span class="hljs-selector-tag">openssl</span> <span class="hljs-selector-tag">x509</span> <span class="hljs-selector-tag">-days</span> 3650 <span class="hljs-selector-tag">-req</span> <span class="hljs-selector-tag">-in</span> <span class="hljs-selector-tag">dashboard</span><span class="hljs-selector-class">.csr</span> <span class="hljs-selector-tag">-signkey</span> <span class="hljs-selector-tag">dashboard</span><span class="hljs-selector-class">.key</span> <span class="hljs-selector-tag">-out</span> <span class="hljs-selector-tag">dashboard</span><span class="hljs-selector-class">.crt</span>
<span class="hljs-selector-tag">openssl</span> <span class="hljs-selector-tag">x509</span> <span class="hljs-selector-tag">-days</span> 3650 <span class="hljs-selector-tag">-req</span> <span class="hljs-selector-tag">-in</span> <span class="hljs-selector-tag">dashboard</span><span class="hljs-selector-class">.csr</span> <span class="hljs-selector-tag">-signkey</span> <span class="hljs-selector-tag">dashboard</span><span class="hljs-selector-class">.key</span> <span class="hljs-selector-tag">-out</span> <span class="hljs-selector-tag">dashboard</span><span class="hljs-selector-class">.crt</span>
openssl x509 -days 3650 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt

这里指定了过期时间3650天,默认365天

4.2 部署Dashboard插件

4.2.1 创建部署kubernetes-dashboard的yaml文件

(文件下载地址:链接:https://pan.baidu.com/s/1L1epcWiEI7v2C4bHo2nx3Q 提取码:1fsh)

根据官方文件做了微调:

  1. 把cert注释掉,使用待会自己创建的cert,因为默认的证书有问题;
  2. 把dashboard访问方式改为NodePort,端口是31234,访问时用pod所在主机的ip加端口号即可访问;
  3. imagePullPolicy改为IfNotPresent,当本地找不到镜像时才从网上拉取;
    注意查看镜像路径是否有效,如果无效,自行百度查找镜像源,或者到别的地方把镜像下载到本地,然后把tag改成和yaml文件中的image一致
  4. arm镜像源修改kubernetesui/metrics-scraper-arm64:v1.0.6和kubernetesui/dashboard-arm64:v2.0.5

4.2.2 部署kubernetes-dashboard

<span class="hljs-attribute">kubectl</span> apply -f /opt/kubernetes-dashboard.yaml
<span class="hljs-attribute">kubectl</span> apply -f /opt/kubernetes-dashboard.yaml
kubectl apply -f /opt/kubernetes-dashboard.yaml

4.2.3 部署完成后还是不能访问,因为yaml文件中注释掉了kubernetes-dashboard-certs,相关的pod没跑起来,所以此时应创建certs

kubectl create secret generic kubernetes-dashboard-certs --<span class="hljs-keyword">from</span>-file=<span class="hljs-regexp">/opt/</span>dashboard.key --<span class="hljs-keyword">from</span>-file=<span class="hljs-regexp">/opt/</span>dashboard.crt -n kubernetes-dashboard
kubectl create secret generic kubernetes-dashboard-certs --<span class="hljs-keyword">from</span>-file=<span class="hljs-regexp">/opt/</span>dashboard.key --<span class="hljs-keyword">from</span>-file=<span class="hljs-regexp">/opt/</span>dashboard.crt -n kubernetes-dashboard
kubectl create secret generic kubernetes-dashboard-certs --from-file=/opt/dashboard.key --from-file=/opt/dashboard.crt -n kubernetes-dashboard

4.2.4 如果失败检查方式

一般经过以上步骤就可以访问dashboard,可以跳过这一步了,但如果此时仍不能访问,pod不是处于"running"状态,可以删除kubenetes-dashboard相关的pod,让kubelet自动生成一个新的可运行的pod
查看kubernetes-dashboard的pod名

kubectl <span class="hljs-keyword">get</span> pods -n kubernetes-dashboard
kubectl <span class="hljs-keyword">get</span> pods -n kubernetes-dashboard
kubectl get pods -n kubernetes-dashboard

删除该pod:

kubectl <span class="hljs-keyword">delete</span> pod -n kubernetes-dashboard <pod名>
kubectl <span class="hljs-keyword">delete</span> pod -n kubernetes-dashboard <pod名>
kubectl delete pod -n kubernetes-dashboard <pod名>

正确结果

[<span class="hljs-string">root@master</span> <span class="hljs-string">/</span>]<span class="hljs-comment"># kubectl get pod -n kubernetes-dashboard</span>
<span class="hljs-string">NAME</span> <span class="hljs-string">READY</span> <span class="hljs-string">STATUS</span> <span class="hljs-string">RESTARTS</span> <span class="hljs-string">AGE</span>
<span class="hljs-string">dashboard-metrics-scraper-57c8667f5c-92fls</span> <span class="hljs-number">1</span><span class="hljs-string">/1</span> <span class="hljs-string">Running</span> <span class="hljs-number">0</span> <span class="hljs-string">5h9m</span>
<span class="hljs-string">kubernetes-dashboard-69d48fd659-bw7zb</span> <span class="hljs-number">1</span><span class="hljs-string">/1</span> <span class="hljs-string">Running</span> <span class="hljs-number">0</span> <span class="hljs-string">5h9m</span>
[<span class="hljs-string">root@master</span> <span class="hljs-string">/</span>]<span class="hljs-comment"># kubectl get  pod -n kubernetes-dashboard</span>
<span class="hljs-string">NAME</span>                                         <span class="hljs-string">READY</span>   <span class="hljs-string">STATUS</span>    <span class="hljs-string">RESTARTS</span>   <span class="hljs-string">AGE</span>
<span class="hljs-string">dashboard-metrics-scraper-57c8667f5c-92fls</span>   <span class="hljs-number">1</span><span class="hljs-string">/1</span>     <span class="hljs-string">Running</span>   <span class="hljs-number">0</span>          <span class="hljs-string">5h9m</span>
<span class="hljs-string">kubernetes-dashboard-69d48fd659-bw7zb</span>        <span class="hljs-number">1</span><span class="hljs-string">/1</span>     <span class="hljs-string">Running</span>   <span class="hljs-number">0</span>          <span class="hljs-string">5h9m</span>
[root@master /]# kubectl get pod -n kubernetes-dashboard NAME READY STATUS RESTARTS AGE dashboard-metrics-scraper-57c8667f5c-92fls 1/1 Running 0 5h9m kubernetes-dashboard-69d48fd659-bw7zb 1/1 Running 0 5h9m

4.3 创建访问用户,用于访问dashboard的Service Account

kubectl <span class="hljs-keyword">create</span> serviceaccount <span class="hljs-keyword">admin</span>-<span class="hljs-keyword">user</span> -n kubernetes-dashboard
kubectl <span class="hljs-keyword">create</span> serviceaccount <span class="hljs-keyword">admin</span>-<span class="hljs-keyword">user</span> -n kubernetes-dashboard
kubectl create serviceaccount admin-user -n kubernetes-dashboard

4.4 为用户绑定角色,创建ClusterRoleBinding

kubectl <span class="hljs-keyword">create</span> clusterrolebinding <span class="hljs-keyword">admin</span>-<span class="hljs-keyword">user</span> <span class="hljs-comment">--clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:admin-user</span>
kubectl <span class="hljs-keyword">create</span> clusterrolebinding <span class="hljs-keyword">admin</span>-<span class="hljs-keyword">user</span> <span class="hljs-comment">--clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:admin-user</span>
kubectl create clusterrolebinding admin-user --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:admin-user

4.5 获取登录密钥

kubectl -n kubernetes-dashboard <span class="hljs-keyword">describe</span> secret $(kubectl -n kubernetes-dashboard <span class="hljs-keyword">get</span> secret | grep <span class="hljs-keyword">admin</span>-<span class="hljs-keyword">user</span> | awk <span class="hljs-string">'{print $1}'</span>)
kubectl -n kubernetes-dashboard <span class="hljs-keyword">describe</span> secret $(kubectl -n kubernetes-dashboard <span class="hljs-keyword">get</span> secret | grep <span class="hljs-keyword">admin</span>-<span class="hljs-keyword">user</span> | awk <span class="hljs-string">'{print $1}'</span>)
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

复制生成的token值即可

[<span class="hljs-string">root@master</span> <span class="hljs-string">opt</span>]<span class="hljs-comment"># kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')</span>
<span class="hljs-attr">Name:</span> <span class="hljs-string">admin-user-token-64tjt</span>
<span class="hljs-attr">Namespace:</span> <span class="hljs-string">kubernetes-dashboard</span>
<span class="hljs-attr">Labels:</span> <span class="hljs-string"><none></span>
<span class="hljs-attr">Annotations: kubernetes.io/service-account.name:</span> <span class="hljs-string">admin-user</span>
<span class="hljs-attr">kubernetes.io/service-account.uid:</span> <span class="hljs-string">c882f015-39ca-11eb-9396-fa163ec97a54</span>
<span class="hljs-attr">Type:</span> <span class="hljs-string">kubernetes.io/service-account-token</span>
<span class="hljs-string">Data</span>
<span class="hljs-string">====</span>
<span class="hljs-attr">ca.crt:</span> <span class="hljs-number">1025 </span><span class="hljs-string">bytes</span>
<span class="hljs-attr">namespace:</span> <span class="hljs-number">20</span> <span class="hljs-string">bytes</span>
<span class="hljs-attr">token:</span> <span class="hljs-string">eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTY0dGp0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJjODgyZjAxNS0zOWNhLTExZWItOTM5Ni1mYTE2M2VjOTdhNTQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.nK8gspJ8DAMzrOesHC-CGvjaYKAtahUCB9L1eQTbaeCXv-8ZT-8HVBzzCTk20XnAG30yPwOD80x_MBCksSgaw7QkImNlZVcNM3JXmaNvxFTObeg9aY_Lgdbs7r4hfAMKZd2wi1G3BaNbfAWnWxlecbOXTMYBL5PI6h5oJSuR6Fgm0IEdRT6diI_uaoan-Mqmvm_VKvj6tMl1xTqczTgnp0Hv5kwJvT0lOYx13nhjix-hfo0B2UaSGDnLcyFLrzAIOfKuAlFQMwcJndgs7hz_x7CM-UpfOvCg4oVrWkHAlspOfxRVflHXjfexUGnjGq2Rywph5h4godbTPwhLwJ4tcg</span>
[<span class="hljs-string">root@master</span> <span class="hljs-string">opt</span>]<span class="hljs-comment"># kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')</span>
<span class="hljs-attr">Name:</span>         <span class="hljs-string">admin-user-token-64tjt</span>
<span class="hljs-attr">Namespace:</span>    <span class="hljs-string">kubernetes-dashboard</span>
<span class="hljs-attr">Labels:</span>       <span class="hljs-string"><none></span>
<span class="hljs-attr">Annotations:  kubernetes.io/service-account.name:</span> <span class="hljs-string">admin-user</span>
              <span class="hljs-attr">kubernetes.io/service-account.uid:</span> <span class="hljs-string">c882f015-39ca-11eb-9396-fa163ec97a54</span>

<span class="hljs-attr">Type:</span>  <span class="hljs-string">kubernetes.io/service-account-token</span>

<span class="hljs-string">Data</span>
<span class="hljs-string">====</span>
<span class="hljs-attr">ca.crt:</span>     <span class="hljs-number">1025 </span><span class="hljs-string">bytes</span>
<span class="hljs-attr">namespace:</span>  <span class="hljs-number">20</span> <span class="hljs-string">bytes</span>
<span class="hljs-attr">token:</span>      <span class="hljs-string">eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTY0dGp0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJjODgyZjAxNS0zOWNhLTExZWItOTM5Ni1mYTE2M2VjOTdhNTQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.nK8gspJ8DAMzrOesHC-CGvjaYKAtahUCB9L1eQTbaeCXv-8ZT-8HVBzzCTk20XnAG30yPwOD80x_MBCksSgaw7QkImNlZVcNM3JXmaNvxFTObeg9aY_Lgdbs7r4hfAMKZd2wi1G3BaNbfAWnWxlecbOXTMYBL5PI6h5oJSuR6Fgm0IEdRT6diI_uaoan-Mqmvm_VKvj6tMl1xTqczTgnp0Hv5kwJvT0lOYx13nhjix-hfo0B2UaSGDnLcyFLrzAIOfKuAlFQMwcJndgs7hz_x7CM-UpfOvCg4oVrWkHAlspOfxRVflHXjfexUGnjGq2Rywph5h4godbTPwhLwJ4tcg</span>
[root@master opt]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}') Name: admin-user-token-64tjt Namespace: kubernetes-dashboard Labels: <none> Annotations: kubernetes.io/service-account.name: admin-user kubernetes.io/service-account.uid: c882f015-39ca-11eb-9396-fa163ec97a54 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1025 bytes namespace: 20 bytes token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTY0dGp0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJjODgyZjAxNS0zOWNhLTExZWItOTM5Ni1mYTE2M2VjOTdhNTQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.nK8gspJ8DAMzrOesHC-CGvjaYKAtahUCB9L1eQTbaeCXv-8ZT-8HVBzzCTk20XnAG30yPwOD80x_MBCksSgaw7QkImNlZVcNM3JXmaNvxFTObeg9aY_Lgdbs7r4hfAMKZd2wi1G3BaNbfAWnWxlecbOXTMYBL5PI6h5oJSuR6Fgm0IEdRT6diI_uaoan-Mqmvm_VKvj6tMl1xTqczTgnp0Hv5kwJvT0lOYx13nhjix-hfo0B2UaSGDnLcyFLrzAIOfKuAlFQMwcJndgs7hz_x7CM-UpfOvCg4oVrWkHAlspOfxRVflHXjfexUGnjGq2Rywph5h4godbTPwhLwJ4tcg

4.6 登录验证

访问我们master地址,通过浏览器访问https://IP:31234,点击继续访问

ARM架构安装Kubernetes集群-牛魔博客

输入token值

ARM架构安装Kubernetes集群-牛魔博客

即可看到kubernetes-dashboard UI界面

ARM架构安装Kubernetes集群-牛魔博客

如果无法访问,可以通过以下方式查看pod状态

[<span class="hljs-string">root@master</span> <span class="hljs-string">opt</span>]<span class="hljs-comment"># kubectl get secret -n kubernetes-dashboard</span>
<span class="hljs-string">NAME</span> <span class="hljs-string">TYPE</span> <span class="hljs-string">DATA</span> <span class="hljs-string">AGE</span>
<span class="hljs-string">admin-user-token-zqdnf</span> <span class="hljs-string">kubernetes.io/service-account-token</span> <span class="hljs-number">3</span> <span class="hljs-string">3h4m</span>
<span class="hljs-string">default-token-v7v95</span> <span class="hljs-string">kubernetes.io/service-account-token</span> <span class="hljs-number">3</span> <span class="hljs-string">3h9m</span>
<span class="hljs-string">kubernetes-dashboard-certs</span> <span class="hljs-string">Opaque</span> <span class="hljs-number">2</span> <span class="hljs-string">3h8m</span>
<span class="hljs-string">kubernetes-dashboard-csrf</span> <span class="hljs-string">Opaque</span> <span class="hljs-number">1</span> <span class="hljs-string">3h9m</span>
<span class="hljs-string">kubernetes-dashboard-key-holder</span> <span class="hljs-string">Opaque</span> <span class="hljs-number">2</span> <span class="hljs-string">3h9m</span>
<span class="hljs-string">kubernetes-dashboard-token-47xg5</span> <span class="hljs-string">kubernetes.io/service-account-token</span> <span class="hljs-number">3</span> <span class="hljs-string">3h9m</span>
[<span class="hljs-string">root@master</span> <span class="hljs-string">opt</span>]<span class="hljs-comment"># kubectl get secret -n kubernetes-dashboard</span>
<span class="hljs-string">NAME</span>                               <span class="hljs-string">TYPE</span>                                  <span class="hljs-string">DATA</span>   <span class="hljs-string">AGE</span>
<span class="hljs-string">admin-user-token-zqdnf</span>             <span class="hljs-string">kubernetes.io/service-account-token</span>   <span class="hljs-number">3</span>      <span class="hljs-string">3h4m</span>
<span class="hljs-string">default-token-v7v95</span>                <span class="hljs-string">kubernetes.io/service-account-token</span>   <span class="hljs-number">3</span>      <span class="hljs-string">3h9m</span>
<span class="hljs-string">kubernetes-dashboard-certs</span>         <span class="hljs-string">Opaque</span>                                <span class="hljs-number">2</span>      <span class="hljs-string">3h8m</span>
<span class="hljs-string">kubernetes-dashboard-csrf</span>          <span class="hljs-string">Opaque</span>                                <span class="hljs-number">1</span>      <span class="hljs-string">3h9m</span>
<span class="hljs-string">kubernetes-dashboard-key-holder</span>    <span class="hljs-string">Opaque</span>                                <span class="hljs-number">2</span>      <span class="hljs-string">3h9m</span>
<span class="hljs-string">kubernetes-dashboard-token-47xg5</span>   <span class="hljs-string">kubernetes.io/service-account-token</span>   <span class="hljs-number">3</span>      <span class="hljs-string">3h9m</span>
[root@master opt]# kubectl get secret -n kubernetes-dashboard NAME TYPE DATA AGE admin-user-token-zqdnf kubernetes.io/service-account-token 3 3h4m default-token-v7v95 kubernetes.io/service-account-token 3 3h9m kubernetes-dashboard-certs Opaque 2 3h8m kubernetes-dashboard-csrf Opaque 1 3h9m kubernetes-dashboard-key-holder Opaque 2 3h9m kubernetes-dashboard-token-47xg5 kubernetes.io/service-account-token 3 3h9m

UI查看节点信息
ARM架构安装Kubernetes集群-牛魔博客

五、卸载K8S组件

注意:
下列步骤仅仅指导用户如何手动卸载K8s组件,请勿在正常的部署过程中执行。

清空K8s集群设置。
在卸载K8s组件前,先执行kubeadm reset命令,清空K8s集群设置。

卸载管理组件。

<span class="hljs-attribute">yum</span> erase -y kubelet kubectl kubeadm kubernetes-cni
<span class="hljs-attribute">yum</span> erase -y kubelet kubectl kubeadm kubernetes-cni
yum erase -y kubelet kubectl kubeadm kubernetes-cni

删除基础组件镜像。
基础组件通过Docker镜像部署,因此只需要强制删除对应镜像即可卸载。

<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/kube-apiserver:v<span class="hljs-number">1</span>.<span class="hljs-number">15</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/kube-controller-manager:v<span class="hljs-number">1</span>.<span class="hljs-number">15</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/kube-scheduler:v<span class="hljs-number">1</span>.<span class="hljs-number">15</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/kube-proxy:v<span class="hljs-number">1</span>.<span class="hljs-number">15</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/pause:<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/etcd:<span class="hljs-number">3</span>.<span class="hljs-number">3</span>.<span class="hljs-number">10</span>
<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/coredns:<span class="hljs-number">1</span>.<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/kube-apiserver:v<span class="hljs-number">1</span>.<span class="hljs-number">15</span>.<span class="hljs-number">1</span>

<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/kube-controller-manager:v<span class="hljs-number">1</span>.<span class="hljs-number">15</span>.<span class="hljs-number">1</span>

<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/kube-scheduler:v<span class="hljs-number">1</span>.<span class="hljs-number">15</span>.<span class="hljs-number">1</span>

<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/kube-proxy:v<span class="hljs-number">1</span>.<span class="hljs-number">15</span>.<span class="hljs-number">1</span>

<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/pause:<span class="hljs-number">3</span>.<span class="hljs-number">1</span>

<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/etcd:<span class="hljs-number">3</span>.<span class="hljs-number">3</span>.<span class="hljs-number">10</span>

<span class="hljs-attribute">docker</span> rmi -f k<span class="hljs-number">8</span>s.gcr.io/coredns:<span class="hljs-number">1</span>.<span class="hljs-number">3</span>.<span class="hljs-number">1</span>
docker rmi -f k8s.gcr.io/kube-apiserver:v1.15.1 docker rmi -f k8s.gcr.io/kube-controller-manager:v1.15.1 docker rmi -f k8s.gcr.io/kube-scheduler:v1.15.1 docker rmi -f k8s.gcr.io/kube-proxy:v1.15.1 docker rmi -f k8s.gcr.io/pause:3.1 docker rmi -f k8s.gcr.io/etcd:3.3.10 docker rmi -f k8s.gcr.io/coredns:1.3.1
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
文章不错?点个赞呗
点赞0 分享
May you live like a child forever.
愿你永远活的像个孩子
评论 抢沙发

请登录后发表评论

    暂无评论内容