traefik k3s配置

traefik 是什么

他是一个专门为了云设计的流量代理软件,还是开源免费的,类似nginx

traefik 如何配置

在这里插入图片描述

traefik 的配置有2种方式

  • 静态配置:定义 entrypoints和 providers
  • 动态配置:关于系统如何处理请求的所有配置,他是热加载的。可以保证配置被改的时候,不换有任何请求被打断和丢失连接。

详细的配置方法官方文档有不在这里赘述了。这里只说一个关键的。
静态配置需要在traefik 启动之前设置好,如果更改traefik的静态配置就必须重新部署他。而动态配置可以交给类似k8s这样的provider 由他们来设置。就是我们通过yaml 设置k8s,k8s 再去自动化配置traefik 的动态配置,从而在不停止traefik 的情况下更新traefik 的某些配置

【参考】
https://doc.traefik.io/traefik/getting-started/configuration-overview/

k8s 配置

对于k8s 由2种配置traefik的方法

  • ingressRpute: 最新的方法,用老的ingress 要写很多annotations,所以官方使用 Kubernetes API. 的扩展语法 Custom Resource Definition (CRD) 定义了新的类型。听官方语气推荐的是这个。不建议用老的方法, 类似下面方法
# As a Kubernetes Traefik IngressRoute
---
apiVersion: traefik.io/v1alpha1
kind: MiddlewareTCP
metadata:
  name: foo-ip-allowlist
spec:
  ipAllowList:
    sourcerange:
      - 127.0.0.1/32
      - 192.168.1.81

---
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
  name: ingressroute
spec:
# more fields...
  routes:
    # more fields...
    middlewares:
      - name: foo-ip-allowlist
  • ingress
  • :老方法,完全符合 Kubernetes Ingress controller 标准的一个控制器。类似下面语法
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-service
  namespace: airflow  # 确保命名空间与 Service 一致
  annotations:


spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: airflow-webserver  # 确保这里替换为 Airflow 的 Service 名称
            port:
              number: 8080  # 确保这是 Airflow 服务监听的端口

【参考】
https://doc.traefik.io/traefik/providers/kubernetes-crd/

如何查看自己的k8s 使用的是什么ingress


# 查看所有ingress 的命令由那些
wen@ubuntuserver:~/kubeyml$ kubectl api-resources | grep ingress
ingressclasses                                 networking.k8s.io/v1              false        IngressClass
ingresses                         ing          networking.k8s.io/v1              true         Ingress
ingressroutes                                  traefik.containo.us/v1alpha1      true         IngressRoute
ingressroutetcps                               traefik.containo.us/v1alpha1      true         IngressRouteTCP
ingressrouteudps                               traefik.containo.us/v1alpha1      true         IngressRouteUDP
ingressroutes                                  traefik.io/v1alpha1               true         IngressRoute
ingressroutetcps                               traefik.io/v1alpha1               true         IngressRouteTCP
ingressrouteudps                               traefik.io/v1alpha1               true         IngressRouteUDP
# 查看现在用的是什么ingress
wen@ubuntuserver:~/kubeyml$ kubectl get  ingressclass -A
NAME      CONTROLLER                      PARAMETERS   AGE
traefik   traefik.io/ingress-controller   <none>       9d

k3s 中的 自定义traefik 的方法

k3s 自带的ingress 就是traefik ,通过helm 安装的

# 搜索远程愿那些traefik chart
wen@ubuntuserver:~/kubeyml$ helm search repo  traefik 
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /etc/rancher/k3s/k3s.yaml
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /etc/rancher/k3s/k3s.yaml
NAME            CHART VERSION   APP VERSION     DESCRIPTION                                       
stable/traefik  1.87.7          1.7.26          DEPRECATED - A Traefik based Kubernetes ingress...

# 查看仓库url
helm repo list
# 查看以及安装的chart 详细信息
helm get all traefik  -n kube-system
#查看远程chart 详细信息
helm show all stable/traefik  -n kube-system

官方推荐的自定义方法可以参考官方的github readme中的Philosophy部分

k3s四种修改chart信息的方法

我们已自带的trafik 为例

  • 修改本地的chart文件
# 查看traefik 的安装信息可以找到原始chart位置
helm get all traefik  -n kube-system
# 你会发先他不是远程拉起的。是从本地的chart 安装下面是chart本地的位置
# /var/lib/rancher/k3s/server/static/charts/traefik-25.0.3+up25.0.0.tgz
  • 创建一个一模一样的Deployment 文件进行覆盖,可以通过kubectl 输出已有的Deployment 文件。在修改apply

  • 通过helm values.yaml 来配置。 这也是官方推荐的做法

#查看value 文件
 helm get values traefik -n kube-system 
  • 使用一个 HelmChartConfig 来添加新的配置 官方文档,这个是k3s推荐的做法。

chart deployment源代码
traefil的values.yaml

traefik所有的cli参数

给k3s的traefik 添加新的entrypoint

使用k3s的推荐做法,添加一个airflow 的entrypoint

apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: traefik
  namespace: kube-system
spec:
  valuesContent: |-
  #上面是追加的意思。下面同样也可以用在value.ymal中
  #官方的模板代码读下面的配置自动给 traefik 发送cli参数,也会自动创建service(本来就是拿来创建服务的)
    ports:
      airflow:
        expose: true
        exposedPort: 8080
        port: 8080
        protocol: TCP
   # 这个没用官方不解析
    entryPoints:
      airflow:
        address: ":8080"
    #这个是官方values中给的一种方法。可以自己指定traefik 的cli参数
    deployment:
      additionalArgs:
      - "--entrypoints.airflow.address=:8080/tcp"

【参考】
https://doc.traefik.io/traefik/

### 关于 K3s 的安装与配置 #### 1. K3s 安装方式 K3s 是一种轻量级的 Kubernetes 发行版,适用于资源受限环境下的容器编排管理。其安装过程简单高效,支持多种部署模式。 通过官方推荐的方式可以快速完成 K3s 的安装。具体命令如下所示[^1]: ```bash curl -sfL https://get.k3s.io | sh - ``` 对于离线场景,则需提前下载对应版本的二进制文件并手动执行安装流程。例如,在一主多从架构下,可参考详细的离线安装指南来实现集群扩展[^2]。 #### 2. 卸载 K3s 方法 如果需要移除已有的 K3s 环境,可通过以下脚本来完成清理工作: ```bash /usr/local/bin/k3s-uninstall.sh ``` 此脚本会在正常安装路径中自动生成,并负责清除所有关联组件及其数据残留[^3]。 #### 3. 基础配置选项 在实际应用过程中,可能涉及一些必要的参数调整以满足特定需求。比如指定节点角色、设置代理地址或者启用高可用功能等。这些都可以借助启动时附加的相关标志项达成目标。 以下是几个常用的 CLI 参数实例说明: - `--node-label`:为当前主机打上标签以便分类调度; - `--cluster-init`:初始化一个多节点共享状态存储的新群集; - `--no-deploy`:禁用某些默认加载的服务模块(如 traefik ingress controller)。 更多高级定制化内容请查阅官方文档链接获取最新最全的信息[^4]。 #### 4. API 访问权限控制 为了保障安全性,建议合理规划 RBAC 规则以及证书生命周期管理策略。只有经过身份验证后的请求才能成功调用到内部核心服务接口之上进行增删改查动作。 --- ### 提供一段简单的 Python 脚本用于测试连接状况 下面给出了一段基于 requests 库的小例子用来探测远程服务器是否能够响应 RESTful 请求。 ```python import requests url = &#39;https://your-k3s-server-ip:6443/version&#39; headers={&#39;Authorization&#39;: &#39;Bearer YOUR_TOKEN&#39;} verify=&#39;/path/to/ca.crt&#39; response = requests.get(url, headers=headers, verify=verify) if response.status_code == 200: print(&#39;Connection successful:&#39;, response.json()) else: print(&#39;Failed to connect:&#39;, response.text) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值