## 安装 ### 前置条件: 要先安装好snap ```bash # 1、首先安装COPR插件和EPEL,通过添加epel存储库并安装copr yum插件来启动安装,运行如下命令: yum -y install epel-release yum -y install yum-plugin-copr # 2、然后添加repo: yum -y copr enable ngompa/snapcore-el7 # 3、添加存储库后,安装snapd软件包,运行以下命令: yum -y install snapd # 4、等待安装完成后启用snapd socket: systemctl enable --now snapd.socket # 5、限制需要从/snap到/var/lib/snapd/snap下的/snap或符号链接下的snaps,为它创建一个符号链接,如下命令: ln -s /var/lib/snapd/snap /snap 做到这里,Snapd已经安装完成了。 ``` ### 安装micro-k8s ``` sudo snap install microk8s --classic ``` ### 设置 K8s 命令别名(alias) ``` # 设置 K8s 命令别名(alias) sudo snap alias microk8s.kubectl kubectl # 将高频使用的 containerd 的主要命令 ctr sudo snap alias microk8s.ctr ctr # 以及 “helm / heml3” 这俩命令: sudo snap alias microk8s.helm helm sudo snap alias microk8s.helm3 helm3 ``` ### 解决 MicroK8s 安装后的常见问题 [参考地址](https://blog.csdn.net/soulteary/article/details/127342346) #### 解决 MicroK8s 无法正常运行的问题 ##### 问题定位 ``` # 当我们执行 microk8s status ,可能会得到类似下面的日志输出,告诉我们程序并没有按照预期运行: microk8s is not running. Use microk8s inspect for a deeper inspection. # 我们可以执行 microk8s.inspect 查看是否有报错信息,如果没有任何报错,可以来通过 kubectl 来进一步排查问题到底出现在了哪里。 # 先通过 kubectl 获取所有 pods 的运行状况: kubectl get pods --all-namespaces ------------------------ # NAMESPACE NAME READY STATUS RESTARTS AGE # kube-system calico-node-nnshm 0/1 Init:0/2 0 9m # kube-system calico-kube-controllers-67774c44db-mcmvx 0/1 Pending 0 9m # 根据日志可以看到,有一个 pod 的状态是 “Init:0/2”,另外一个是“Pending”。这个排队启动的问题,是导致我们的 MicroK8s 没有正常运行的主要原因。 #接着,使用 kubectl describe pod 来查看到底是为什么: kubectl describe pod --all-namespaces # 命令执行完毕,发现日志中容器运行原来是卡在了 k8s.gcr.io/pause:3.7 这个镜像的下载: ------------------------ # Warning FailedCreatePodSandBox 2m52s (x6 over 7m51s) kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to get sandbox image "k8s.gcr.io/pause:3.7": failed to pull image "k8s.gcr.io/pause:3.7": failed to pull and unpack image "k8s.gcr.io/pause:3.7": failed to resolve reference "k8s.gcr.io/pause:3.7": failed to do request: Head "https://k8s.gcr.io/v2/pause/manifests/3.7": dial tcp 142.xxx.xxx.xxx:443: i/o timeout ``` ##### 解决方案: ``` # 安装dodcker # 安装dodcker apt-get install docker.io # 拉取 pause-amd64 版本只有3.1 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1 k8s.gcr.io/pause:$PAUSE_VERSION # 修改镜像名 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1 k8s.gcr.io/pause:3.7 # 导出tar包 docker save k8s.gcr.io/pause:3.7 -o pause-3.7.tar # 导入到containerd ctr images import pause-3.7.tar ------------------------ # unpacking k8s.gcr.io/pause:3.7 (sha256:dbd83f9b94c312efd98b95b09ced85479fbba3c3b2d05a5c3e09c9cfa4421ff6)...done # 重启microk8s microk8s stop && microk8s start ``` ##### 解决方案二: [简书链接](https://www.jianshuctl.com/p/95b591391165)