Microk8s 安装helm3
原本使用官方的命令时这样的。但是使用的是官方的源,网络极不稳定。就出现了下面的状况。解决方法是更改为国内的源。
microk8s enable helm3
curl: (56) GnuTLS recv error (-54): Error in the pull function.
通过ps命令查看该进程的工作
可以看到使用microk8s enable helm3
的时候,执行的命令和工作的目录。用此来确定工作的数据目录。
进入action目录查看的时候看到了enable.helm3.sh
的脚本。
root@local:/snap/microk8s/2035/actions# ls common disable.knative.sh enable.gpu.sh enable.rbac.sh coredns.yaml disable.kubeflow.sh enable.ha-cluster.sh enable.registry.sh dashboard.yaml disable.linkerd.sh enable.helm.sh enable.storage.sh disable.ambassador.sh disable.metallb.sh enable.helm3.sh enable.traefik.sh disable.cilium.sh disable.metrics-server.sh enable.host-access.sh fluentd disable.dashboard.sh disable.multus.sh enable.ingress.sh gpu.yaml disable.dns.sh disable.portainer.sh enable.istio.sh ingress.yaml disable.fluentd.sh disable.prometheus.sh enable.jaeger.sh jaeger disable.gpu.sh disable.rbac.sh enable.juju.sh knative disable.ha-cluster.sh disable.registry.sh enable.keda.sh metallb.yaml disable.helm.sh disable.storage.sh enable.knative.sh metrics-server.yaml disable.helm3.sh disable.traefik.sh enable.kubeflow.sh multus.yaml disable.host-access.sh dns.yaml enable.linkerd.sh prometheus disable.ingress.sh enable.ambassador.sh enable.metallb.sh registry-help.yaml disable.istio.sh enable.cilium.sh enable.metrics-server.sh registry.yaml disable.jaeger.sh enable.dashboard.sh enable.multus.sh storage.yaml disable.juju.sh enable.dns.sh enable.portainer.sh traefik.yaml disable.keda.sh enable.fluentd.sh enable.prometheus.sh
查看该脚本
root@local:/snap/microk8s/2035/actions# cat enable.helm3.sh #!/usr/bin/env bash set -e source $SNAP/actions/common/utils.sh CA_CERT=/snap/core/current/etc/ssl/certs/ca-certificates.crt echo "Enabling Helm 3" if [ ! -f "${SNAP_DATA}/bin/helm3" ] then # 这里就是官方的源地址了,就是因为它导致下载的超时。 SOURCE_URI="https://get.helm.sh" HELM_VERSION="v3.0.2" echo "Fetching helm version $HELM_VERSION." run_with_sudo mkdir -p "${SNAP_DATA}/tmp/helm" (cd "${SNAP_DATA}/tmp/helm" run_with_sudo "${SNAP}/usr/bin/curl" --cacert $CA_CERT -L $SOURCE_URI/helm-$HELM_VERSION-linux-$(arch).tar.gz -o "$SNAP_DATA/tmp/helm/helm.tar.gz" run_with_sudo gzip -f -d "$SNAP_DATA/tmp/helm/helm.tar.gz" run_with_sudo tar -xf "$SNAP_DATA/tmp/helm/helm.tar") run_with_sudo mkdir -p "$SNAP_DATA/bin/" run_with_sudo mv "$SNAP_DATA/tmp/helm/linux-$(arch)/helm" "$SNAP_DATA/bin/helm3" run_with_sudo chmod +x "$SNAP_DATA/bin/" run_with_sudo chmod +x "$SNAP_DATA/bin/helm3" run_with_sudo rm -rf "$SNAP_DATA/tmp/helm" fi echo "Helm 3 is enabled" root@local:/snap/microk8s/2035/actions#
在直接更改了它保存退出,报错。
文件系统只读,那是因为这是安装程序在本地挂载的回环地址是只读的形式挂载的,尝试以可读写的方式挂载失败了。
然后把脚本复制出来,更改单独执行。
root@local:~# cat /tmp/enable.helm3.sh #!/usr/bin/env bash set -e # 手动添加的目录变量 SNAP=/snap/microk8s/2035 SNAP_DATA=/var/snap/microk8s/2035 source $SNAP/actions/common/utils.sh CA_CERT=/snap/core/current/etc/ssl/certs/ca-certificates.crt echo "Enabling Helm 3" if [ ! -f "${SNAP_DATA}/bin/helm3" ] then # 更改为华为的源 SOURCE_URI="https://mirrors.huaweicloud.com/helm/v3.0.2/" HELM_VERSION="v3.0.2" echo "Fetching helm version $HELM_VERSION." run_with_sudo mkdir -p "${SNAP_DATA}/tmp/helm" (cd "${SNAP_DATA}/tmp/helm" # $(arch)改成了amd64 run_with_sudo "${SNAP}/usr/bin/curl" --cacert $CA_CERT -L $SOURCE_URI/helm-$HELM_VERSION-linux-amd64.tar.gz -o "$SNAP_DATA/tmp/helm/helm.tar.gz" run_with_sudo gzip -f -d "$SNAP_DATA/tmp/helm/helm.tar.gz" run_with_sudo tar -xf "$SNAP_DATA/tmp/helm/helm.tar") run_with_sudo mkdir -p "$SNAP_DATA/bin/" run_with_sudo mv "$SNAP_DATA/tmp/helm/linux-amd64/helm" "$SNAP_DATA/bin/helm3" run_with_sudo chmod +x "$SNAP_DATA/bin/" run_with_sudo chmod +x "$SNAP_DATA/bin/helm3" run_with_sudo rm -rf "$SNAP_DATA/tmp/helm" fi echo "Helm 3 is enabled" # 执行 root@local:/tmp# ./enable.helm
查看结果