[k8s] 如何在Centos7上安装microk8s

Posted pcj_888

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[k8s] 如何在Centos7上安装microk8s相关的知识,希望对你有一定的参考价值。

文章目录

在线安装Microk8s

  1. 安装snap
yum install -y epel-release
yum install -y snapd
systemctl enable --now snapd.socket
systemctl start snapd
ln -s /var/lib/snapd/snap /snap
  1. 安装microk8s
snap install microk8s --classic --channel=1.23/stable
snap alias microk8s.kubectl kubectl
  1. 安装microk8s插件(addons)
microk8s enable dns ingress metrics-server

成功安装后,通过kubectl查看Pod和Image

# kubectl get pods -A
kube-system   calico-node-srvfr                         1/1     Running   0          11m
kube-system   calico-kube-controllers-5b577d865-xwqjh   1/1     Running   0          11m
kube-system   coredns-64c6478b6c-fcvkk                  1/1     Running   0          23s
ingress       nginx-ingress-microk8s-controller-rqtj2   1/1     Running   0          32s
kube-system   metrics-server-679c5f986d-vb6z7           1/1     Running   0          53m

microk8s.ctr i list | grep -vw DIGEST | grep -v ^sha256 | grep -v @sha256 | awk 'print $1'
docker.io/calico/cni:v3.19.1
docker.io/calico/kube-controllers:v3.17.3
docker.io/calico/node:v3.19.1
docker.io/calico/pod2daemon-flexvol:v3.19.1
docker.io/coredns/coredns:1.8.0
k8s.gcr.io/ingress-nginx/controller:v1.5.1
k8s.gcr.io/metrics-server/metrics-server:v0.5.2
k8s.gcr.io/pause:3.1

离线安装Microk8s

  1. 在可联网的环境下载Microk8s的snap安装包
snap download microk8s --channel=1.23/stable # 下载指定版本1.23
  1. 将下载好的snap包传输到目标机器上,安装microk8s
snap ack microk8s_<版本号>.assert
snap install microk8s_<版本号>.snap --classic
  1. 启动Microk8s服务
microk8s start
  1. 启动microk8s插件(可选)

在可联网的环境下载Microk8s插件的Image并导出

microk8s.ctr i list | grep -vw DIGEST | grep -v ^sha256 | grep -v @sha256 | awk 'print $1'
docker.io/calico/cni:v3.19.1
docker.io/calico/kube-controllers:v3.17.3
docker.io/calico/node:v3.19.1
docker.io/calico/pod2daemon-flexvol:v3.19.1
docker.io/coredns/coredns:1.8.0
k8s.gcr.io/ingress-nginx/controller:v1.5.1
k8s.gcr.io/metrics-server/metrics-server:v0.5.2
k8s.gcr.io/pause:3.1

microk8s.ctr i export cni.tar docker.io/calico/cni:v3.19.1
microk8s.ctr i export kube-controllers.tar docker.io/calico/kube-controllers:v3.17.3
microk8s.ctr i export .....

将image传到目标机器上并导入

microk8s.ctr image import *.tar

启动microk8s插件

microk8s enable dns ingress metrics-server
microk8s status --wait-ready

配置kubectl访问Microk8s

microk8s.kubectl config view --raw > $HOME/.kube/config

卸载microk8s

microk8s stop 
snap remove microk8s
rm -rf /root/.kube

Microk8s 无法在 Longhorn 上自动安装 pod

【中文标题】Microk8s 无法在 Longhorn 上自动安装 pod【英文标题】:Microk8s fails to AUTOMATICALLY mount pod on Longhorn 【发布时间】:2021-12-09 07:23:16 【问题描述】:

我在 Ubuntu 20.04 上设置了单节点 kubernetes。我正在为我的单节点集群使用 microk8s 和 longhorn 存储。我通过 Lens IDE 使用 Helm 安装软件包。我已经按照各自的指南配置了所有内容,但是每当我安装需要持久性的软件包(例如 Mariadb 或 Wordpress)时,都会发生以下情况:

pv 和 pvc 成功创建和绑定 pod创建失败,报如下错误
MountVolume.SetUp failed for volume "pvc-fdada93c-c4af-4916-942f-abf9897feaf9" : applyFSGroup failed for vol pvc-fdada93c-c4af-4916-942f-abf9897feaf9: lstat /var/snap/microk8s/common/var/lib/kubelet/pods/f69173e1-cd98-4f86-9e52-edf62fa723da/volumes/kubernetes.io~csi/pvc-fdada93c-c4af-4916-942f-abf9897feaf9/mount: no such file or directory
当我使用以下命令手动创建目录时,pod 将成功启动
mkdir -p /var/snap/microk8s/common/var/lib/kubelet/pods/f69173e1-cd98-4f86-9e52-edf62fa723da/volumes/kubernetes.io~csi/pvc-fdada93c-c4af-4916-942f-abf9897feaf9/mount
如果我重新启动服务器,该问题将重复出现

问题:当我从 Helm 安装包时,如何让 Pod 自动挂载。我已经在使用相同软件的类似单节点集群上看到过这种情况。

注意:nfs-common 和 open-iscsi 都在运行

【问题讨论】:

【参考方案1】:

我能够找出问题所在。

问题实际上并不是 Longhorn 本身造成的。这是由于 CoreDNS。

由于防火墙限制,CoreDNS 无法解析内部 kubernetes DNS,尤其是longhorn-backend

如果 UI 和驱动程序无法访问 longhorn-backend,它们将永远无法启动。修复 CoreDNS 问题导致 longhorn 服务运行良好,我的 PVC 和 PV 也按预期工作。

解决步骤如下

    检查 coredns pod 是否有错误

    kubectl 记录 coredns-7f9c69c78c-7dsjg -n kube-system

除了 coredns 版本之外的任何输出都意味着您需要解决显示的错误

对我来说,这是通过禁用防火墙并在我的节点的 /etc/resolv.conf 文件中添加 8.8.8.8 来完成的

    一旦解决,您可以等待 coredns 解析内部 DNS 或使用以下命令重新启动它

    kubectl rollout restart 部署/coredns -n kube-system

之后一切正常!

【讨论】:

以上是关于[k8s] 如何在Centos7上安装microk8s的主要内容,如果未能解决你的问题,请参考以下文章

microk8s处理微服务之间的调用

microk8s上给Pod挂载NFS

Microk8s 无法在 Longhorn 上自动安装 pod

在 WSL 2 上使用 Ansible 通过 snap 安装 microk8s

Centos7.6安装k8s(kubadmin高可用)

sh 如何在Linux上使用microk8s(Mint)