无法访问 Traefik 仪表板,获取 404从 Helm 图表安装在 Kubernetes (k3d) 上在 Ubuntu 20.04 笔记本电脑上

问题描述

我像这样创建了一个 k3d 集群:

# Create 3 server nodes and only allow control plane stuff on there (and things with tolerations)
# Pretty print:
# k3d cluster create dev 
#   --api-port 6551 
#   --port "8081:80@loadbalancer" 
#   --servers 3 
#   --k3s-server-arg --node-taint="CriticalAddonsOnly=true:NoExecute" 
#   --k3s-server-arg "--no-deploy=traefik"
#
k3d cluster create dev --api-port 6551 --port "8081:80@loadbalancer" --servers 3 --k3s-server-arg --node-taint="CriticalAddonsOnly=true:NoExecute" --k3s-server-arg "--no-deploy=traefik"

然后我安装了 Traefik:

# Has tolerations so it can run on those nodes
# Pretty print:
# helm install traefik traefik/traefik 
#   --set tolerations[0].key=CriticalAddonsOnly 
#   --set tolerations[0].operator=Exists 
#   --set tolerations[0].effect=NoExecute 
#   --set ingressRoute.dashboard.annotations."kubernetes\.io/ingress\.class"=traefik-internal
#
helm install traefik traefik/traefik --set tolerations[0].key=CriticalAddonsOnly --set tolerations[0].operator=Exists --set tolerations[0].effect=NoExecute --set ingressRoute.dashboard.annotations."kubernetes\.io/ingress\.class"=traefik-internal

然后我开始端口转发:

kubectl port-forward $(kubectl get pods --selector "app.kubernetes.io/name=traefik" --output=name) 9000:9000

当我访问 http://127.0.0.1/dashboard/ 时,我收到 404

我可以看到豆荚:

kubectl get pods

# NAME                       READY   STATUS    RESTARTS   AGE
# svclb-traefik-5gbwz        2/2     Running   0          20m
# svclb-traefik-fmpgc        2/2     Running   0          20m
# svclb-traefik-lg9j6        2/2     Running   0          20m
# traefik-84846f6fcb-q5hwd   1/1     Running   0          20m

但是,没有显示入口:

kubectl get ingresses --all-namespaces
# Warning: extensions/v1beta1 Ingress is deprecated in v1.14+,unavailable in v1.22+; use networking.k8s.io/v1 Ingress
# No resources found

Kubernetes 版本为 1.19.4 缺少什么设置?

解决方法

问题在于两件事:

  1. 通过 Traefik 的 Helm 图表安装的 Service 和其他不在 Deployment 中的 K8s 对象没有部分可以从 tolerations
  2. 我只运行了受污染的节点,因此 Traefik Deployment 安装了它的 pod,但没有安排其他任何事情

修复

values.yaml

之后,您可以安装 Traefik。