• k3s 快速入门 - traefix 使用 - 1


    K3s快速搭建入门

    k3s Traekfix v2版本开启dashboard并进行项目的部署及使用

    1、什么是traefix?

    官网介绍:Træfɪk 是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。
    Traefix是k3s里面的Ingress Controller。支持负载均衡和反向代理,类似于ngnix。

    2、在k3s中开启traefix dashboard

    k3s安装启动的时候,默认使用traefix为Ingress Controller,Traefik ingress controller 将使用主机上的 80 和 443 端口(即这些端口不能用于 HostPort 或 NodePort)。traekfix有一个可视化界面,可以通过dashboard查看路由信息等。开启可视化界面有两种方式,一种是通过port-forward;一种是添加ingress,通过域名访问。

    2.1、通过port-forward方式访问dashboard

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

    端口转发开启后,可以通过http://127.0.0.1:9000/dashboard来访问可视化界面:

    2.2、通过自定义IngressRoute CRD

    # dashboard.yaml
    apiVersion: traefik.containo.us/v1alpha1
    kind: IngressRoute
    metadata:
      name: dashboard
    spec:
      entryPoints:
        - web
      routes:
        - match: Host(`traefik.example`) && (PathPrefix(`/dashboard`) || PathPrefix(`/api`))
          kind: Rule
          services:
            - name: api@internal
              kind: TraefikService
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    执行命令kubectl apply -f dashboard.yaml
    部署成功后,可通过http://traefik.example/dashboard/ 访问 Dashboard:
    在这里插入图片描述

    3、部署docker-demo应用

    minikube 实战篇 - 镜像打包部署 - 2中有关于部署docker-demo的脚本,执行:

    kubectl create deployment docker-demo --image=halo26812/docker-demo:0.0.1
    kubectl expose deployment docker-demo --type=ClusterIP --port=8080
    
    • 1
    • 2

    --type=NodePort修改成--type=ClusterIP,部署的服务是通过ingress提供给外部访问。

    type描述
    ClusterIP只对集群内部可见,外部无法访问
    NodePort对外部可见

    执行如下:

    [root@localhost halo]# kubectl create deployment docker-demo --image=halo26812/docker-demo:0.0.1
    deployment.apps/docker-demo created
    [root@localhost halo]# kubectl expose deployment docker-demo --type=ClusterIP --port=8080
    service/docker-demo exposed
    
    • 1
    • 2
    • 3
    • 4

    执行成功。现在需要通过自定义IngressRoute,开放docker-demo服务,定义IngressRoute文件docker-demo-ingressRoute.yaml,如下:

    #docker-demo-ingressRoute.yaml
    apiVersion: traefik.containo.us/v1alpha1
    kind: IngressRoute
    metadata:
      name: docker-demo-ingress
      namespace: default
    spec:
      entryPoints:
        - web
      routes:
        - match: Host(`docker.halo.io`) && PathPrefix(`/hello`)
          kind: Rule
          services:
            - name: docker-demo
              port: 8080
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    以下是相关配置参数的一些说明:

    参数描述
    match是匹配host地址“docker.halo.io”及访问路径前缀匹配“hello”
    services.name是应用名:docker-demo
    services.port是服务端口:8080

    执行docker-demo-ingressRoute.yaml文件

    halo at MacBook-Pro-3 in ~/minikube/k3s
    ○ kubectl apply -f docker-demo-ingressRoute.yaml                                                             
    ingressroute.traefik.containo.us/docker-demo-ingress created
    
    • 1
    • 2
    • 3

    执行成功之后在host文件中配置。

    192.168.2.42 docker.halo.io
    
    • 1

    配置完成之后,在浏览器端访问http://docker.halo.io/hello。如图:
    在这里插入图片描述
    浏览器界面显示“hello world!”。访问成功!

  • 相关阅读:
    【Python 千题 —— 基础篇】分割有效信息
    mysql-norebuild的ddl测试
    微服务面试
    Find My行李箱|苹果Find My技术与行李箱结合,智能防丢,全球定位
    【进程创建】
    保姆级教程 --redis启动命令
    从 0 搭建 Vite 3 + Vue 2.7 前端工程化项目
    后台管理项目开发笔记2
    湖北移动中兴B860AV2.1_S905L_线刷固件包
    【Vite】Vite配置文件中的插件学习
  • 原文地址:https://blog.csdn.net/exception_class/article/details/126470766