0

*交叉发布到k3d github 讨论Rancher 论坛中的线程以及traefik 的社区讨论板

2020 年的教程是指编辑 traefik configmap。它去哪儿了?

traefik安装说明参考了几种公开仪表板的方法:

  1. 这有效,但不是持久的:使用 1-time 命令kubectl -n kube-system port-forward $(kubectl -n kube-system get pods --selector "app.kubernetes.io/name=traefik" --output=name) 9000:9000

  2. 我无法让它工作:创建一个“IngressRoute”yaml 文件并将其应用于集群。这可能是由于 Klipper LB 和/或我的无知。

traefik 部署未使用 configmap

对于 2-server、2-agent 集群...kubectl -n kube-system describe deploy traefik不显示任何 configmap:

  Volumes:
   data:
    Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:     
    SizeLimit:  <unset>
   tmp:
    Type:               EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:             
    SizeLimit:          <unset>
  Priority Class Name:  system-cluster-critical

没有“traefik”配置图

并且,kubectl get -n kube-system cm显示:

NAME                                 DATA   AGE
chart-content-traefik                0      28m
chart-content-traefik-crd            0      28m
chart-values-traefik                 1      28m
chart-values-traefik-crd             0      28m
cluster-dns                          2      28m
coredns                              2      28m
extension-apiserver-authentication   6      28m
k3s                                  0      28m
k3s-etcd-snapshots                   0      28m
kube-root-ca.crt                     1      27m
local-path-config                    4      28m

traefik pod 没有使用 configmap

描述吊舱也不会出现任何问题。kubectl -n kube-system describe pod traefik-....结果也没有配置图。

Traefik 端口正在使用,但没有响应

但是,我确实看到了使用端口的 traefik pod 的参数:

      --entryPoints.traefik.address=:9000/tcp
      --entryPoints.web.address=:8000/tcp
      --entryPoints.websecure.address=:8443/tcp

但是,这些端口并未暴露。因此,我尝试使用 进行端口转发kubectl port-forward pods/traefik-97b44b794-r9srz 9000:9000 8000:8000 8443:8443 -n kube-system --address 0.0.0.0,但是当我curl -v localhost:9000(或 8000 或 8443)和curl -v localhost:9000/dashboard时,我得到“404 Not Found”。

将终端连接到 traefik 后,我发现本地端口已打开,但似乎没有任何响应:

/ $ netstat -lntu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
tcp        0      0 :::8443                 :::*                    LISTEN      
tcp        0      0 :::8000                 :::*                    LISTEN      
tcp        0      0 :::9000                 :::*                    LISTEN      
/ $ wget localhost:9000
Connecting to localhost:9000 ([::1]:9000)
wget: server returned error: HTTP/1.1 404 Not Found
/ $ wget localhost:8000
Connecting to localhost:8000 ([::1]:8000)
wget: server returned error: HTTP/1.1 404 Not Found
/ $ wget localhost:8443
Connecting to localhost:8443 ([::1]:8443)
wget: server returned error: HTTP/1.1 404 Not Found

版本

k3d version v4.4.7
k3s version v1.21.2-k3s1 (default)
4

3 回答 3

8

我找到了解决方案,希望有人能尽快找到更好的解决方案

  1. 您需要从您的 PC 控制您的 k3s 集群,而不是 ssh 到主节点,所以添加/etc/rancher/k3s/k3s.yaml到您的本地~/.kube/config(以便在最后一步中将端口转发到您的 PC)
  2. 现在获取您的 pod 名称,如下所示:

kubectl get pod -n kube-system

寻找traefik-something-somethingElse 我的是traefik-97b44b794-bsvjn

  1. 现在你的本地电脑需要这部分

kubectl port-forward traefik-97b44b794-bsvjn -n kube-system 9000:9000

  1. 进入http://localhost:9000/dashboard/你最喜欢的浏览器,不要忘记第二个斜线
  2. 享受仪表板

请注意,您必须先/var/lib/rancher/k3s/server/manifests/traefik.yaml通过添加启用仪表板

dashboard:
  enabled: true
于 2021-09-02T15:54:10.820 回答
1

Jakub 的回答非常好。但不幸的是,如果 k3s 重新启动,配置会被重置。根据k3s 文档,如果您创建一个名为 的自定义文件/var/lib/rancher/k3s/server/manifests/traefik-config.yaml,k3s 的 traefik 将使用这个新配置自动更新并使用它的值。这是我所拥有的:

apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: traefik
  namespace: kube-system
spec:
  valuesContent: |-
    dashboard:
      enabled: true
    ports:
      traefik:
        expose: true # this is not recommended in production deployments, but I want to be able to see my dashboard locally
    logs:
      access:
        enabled: true

使用此设置,您可以跳过port-forwarding 并直接转到http://localhost:9000/dashboard/

于 2022-01-28T14:30:12.797 回答
0

对于当前最新版本的 k3s (1.21.4):

  1. 根据 traefik 的安装指南(https://doc.traefik.io/traefik/getting-started/install-traefik/#exposing-the-traefik-dashboard),使用正确的 CRD 内容创建 dashboard.yaml,然后运行 kubectl apply -f dashboard.yaml

  2. 创建 DNS 记录或修改主机名的主机文件 - 为您在上一步中设置的 IP 映射

于 2021-09-11T11:41:15.117 回答