k8s使用traefik暴露http服务和tcp服务

这篇具有很好参考价值的文章主要介绍了k8s使用traefik暴露http服务和tcp服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

traefik官网:Traefik Proxy Documentation - Traefik

1、下载chart包

helm repo add traefik https://helm.traefik.io/traefik
helm repo update
helm pull traefik/traefik

2、下载镜像

docker pull docker.io/library/traefik:2.8

3、修改values.yaml

3.1、几个重要的端口配置

将traefik、web、websecure、metrics下的expose都改为true。

ports:
  traefik:
    port: 9000
    expose: false
    # The exposed port for this service
    exposedPort: 9000
    # The port protocol (TCP/UDP)
    protocol: TCP
  web:
    port: 8000
    # hostPort: 8000
    expose: true
    exposedPort: 80
    # The port protocol (TCP/UDP)
    protocol: TCP
  websecure:
    port: 8443
    # hostPort: 8443
    expose: true
    exposedPort: 443
    # The port protocol (TCP/UDP)
    protocol: TCP
    tls:
      enabled: false
      # this is the name of a TLSOption definition
      options: ""
      certResolver: ""
      domains: []
      # - main: example.com
      #   sans:
      #     - foo.example.com
      #     - bar.example.com
  metrics:
    port: 9100
    # hostPort: 9100
    expose: false
    # The exposed port for this service
    exposedPort: 9100
    # The port protocol (TCP/UDP)
    protocol: TCP

tlsOptions: {}

3.2、service配置:

配置使用何种方式将traefik的相关服务暴露出去,使得在集群外可以访问,我这里使用NodePort暴露。

# Options for the main traefik service, where the entrypoints traffic comes
# from.
service:
  enabled: true
  type: NodePort
  # Additional annotations applied to both TCP and UDP services (e.g. for cloud provider specific config)
  annotations: {}
  # Additional annotations for TCP service only
  annotationsTCP: {}
  # Additional annotations for UDP service only
  annotationsUDP: {}
  # Additional service labels (e.g. for filtering Service by custom labels)
  labels: {}
  # Additional entries here will be added to the service spec.
  # Cannot contain type, selector or ports entries.
  spec: {}
    # externalTrafficPolicy: Cluster
    # loadBalancerIP: "1.2.3.4"
    # clusterIP: "2.3.4.5"
  loadBalancerSourceRanges: []
    # - 192.168.0.1/32
    # - 172.16.0.0/16
  externalIPs: []

3.3、使用hostNetwork

必须将hostNetwork的值设为true。

hostNetwork: true

3.4、配置traefik ingressClass

我这里将ingressClass设为mytraefik(建议将ingressClass的值设为和部署实例名称一样)。

providers:
  kubernetesIngress:
    enabled: true
    allowExternalNameServices: false
    allowEmptyServices: false
    ingressClass: mytraefik

3.5、 添加自定义端口

在traefik中,暴露TCP服务需要在部署traefik时定义好需要使用的端口,不同于nginx-ingress可以动态修改TCP端口,traefik不支持动态增加TCP端口。

这里,我配置了两个端口:32000和32001,这两个端口的别名分别为myport32000和myport32001如果需要使用traefik暴露TCP服务,我就可以使用这两个端口。

additionalArguments:
  - --entrypoints.myport32000.Address=:32000
  - --entrypoints.myport32001.Address=:32001

3.6、允许使用80端口

ecurityContext:
  capabilities:
    drop: [ALL]
    add: [NET_BIND_SERVICE]		# 开放绑定端口
  readOnlyRootFilesystem: true
  runAsGroup: 0
  runAsNonRoot: false
  runAsUser: 

4、部署traefik

改好参数后,就可以直接部署traefik了。

helm install mytraefik .

5、访问traefik

部署完成后,查看创建的service

k8s使用traefik暴露http服务和tcp服务

使用浏览器访问traefik的dashboard(9000端口对应的服务就是dashboard)

# 千万注意,这个地址不能错。必须是 服务器ip:NodePort端口/dashboard/#/
http://10.10.101.140:30332/dashboard/#/

k8s使用traefik暴露http服务和tcp服务

6、使用traefik暴露http服务

6.1:创建ingress

traefik暴露HTTP服务和nginx ingress的方式是一样的,就是创建一个Ingress资源,在annotations中指定tkubernetes.io/ingress.class为mytraefik(在步骤3.4中配置的)。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: mytraefik
  name: es-log-elasticsearch-http-ehcth3
  namespace: zeus-test
spec:
  rules:
  - host: hces.hclyl.com
    http:
      paths:
      - backend:
          serviceName: es-log-kibana
          servicePort: 5200
        path: /

6、使用traefik暴露tcp服务

6.1 创建ingressroutetcp

match的值都默认为: HostSNI('*')

entryPoints: entryPoints的值即为步骤3.5中配置的端口别名,我这里使用myport32000。

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRouteTCP
metadata:
  name: mysql
  namespace: zeus-test
spec:
  entryPoints:
    - myport32000
  routes:
  - match: HostSNI(`*`)
    services:
    - name: test-mysql
      port: 3306

创建完ingressroutetcp cr后,就可以使用32000端口访问mysql服务了。文章来源地址https://www.toymoban.com/news/detail-402717.html

到了这里,关于k8s使用traefik暴露http服务和tcp服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • k8s svc通过externalIPs并结合Keepalived对外暴露服务

    Kubemetes 的 Service需要对集群外暴露,可以通过NodePort、Ingress和LoadBalancer,其中 NodePort:需要预先知道k8s集群节点的IP地址,在使用时需指定node的ip(这样配置存在单点故障); Ingress:实现的是HTTP(S)负载均衡器,只能代理七层; LoadBalancer:需要通过云服务商提供的负载均衡器

    2024年02月05日
    浏览(64)
  • Kubernetes(k8s)当中安装并使用ingress暴露应用

    当我们使用不同类型的服务来暴露应用的时候会遇到一下问题: LoadBalancer :当我们在使用LoadBalancer类型的Service暴露服务的时候,一般都需要占用一个公网或者是内网IP地址。使用ingress我们就可以通过一个IP地址暴露多个服务。Ingress会根据客户端输入的不同的域名来确定我们

    2024年02月11日
    浏览(44)
  • K8s: Ingress对象, 创建Ingress控制器, 创建Ingress资源并暴露服务

    Ingress对象 1 )概述 Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP Ingress-nginx 本质是网关,当你请求 abc.com/service/a, Ingress 就把对应的地址转发给你,底层运行了一个 nginx 但 K8s 为什么不直接使用 nginx 呢,是因为 K8s 也需要把转发的路由规则纳入

    2024年04月28日
    浏览(45)
  • K8s基础8——svc基础使用、应用暴露、iptables代理、ipvs代理

    Service存在的意义? 引入Service主要是解决Pod的动态变化,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上。 若提供服务的容器应用是分布式,所以存在多个pod副本,而Pod副本数量可能在运行过程中

    2024年02月11日
    浏览(43)
  • K8S暴露pod内多个端口

    公司统一用的某个底包跑jar服务,只暴露了8080端口  由于有些服务在启动jar服务后,会启动多个端口,除了8080端口,还有别的端口需要暴露,我这里就还需要暴露9999端口。 注:解决办法其实是可以直接改底包就好了,在底包中多暴露几个端口,但是我这边因为无法改底包,

    2024年02月14日
    浏览(38)
  • kube-state-metrics暴露k8s中的监控指标

    kube-state-metrics 是一个用于从 Kubernetes 集群中生成各种资源对象状态指标的工具。 通过Deployment等配置完成安装 https://github.com/kubernetes/kube-state-metrics/tree/main/examples/standard 根据官方给定的配置添加至k8s上 注意需要RBAC授权 启动项 要使 kube-state-metrics 暴露更多的节点和 Pod 指标,可

    2024年02月14日
    浏览(43)
  • 03-k8s的pod资源01-数据持久化、env环境变量、网络暴露

    1,pod资源是k8s集群当中,最小的管理单位; 2,其他所有资源都是围绕着为pod资源提供服务的;给pod提供服务的; 3,pod就是“一组”容器,一个pod中可以有1个或者多个容器;         emptyDir存储卷,本质上是一个临时的目录,其生命周期与pod相同,pod被删除,则数据也会被

    2024年02月21日
    浏览(41)
  • 云上攻防-云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露

    如上图所示:etcd服务是运行在master节点上的,master节点上查看该服务 默认通过证书认证,主要存放节点的数据,如一些token和证书。 当然,初始安全情况下,该服务是安全的(2379不对外开放,本地可访问),下面三种主要是配置问题 配置文件:/etc/kubernetes/manifests/etcd.yaml 注释

    2024年02月08日
    浏览(61)
  • k8s 使用 containerd 运行时配置 http 私服

    Kubernetes 从 v1.20 开始弃用 Docker,并推荐用户切换到基于容器运行时接口(CRI)的容器引擎,如 containerd、cri-o 等。 目前使用的环境中使用了 Kubernetes v1.22.3,containerd 1.4.3,containerd 在配置私服配置上与直接使用 docker 有一定区别。 今天简单聊一下如何配置私服,默认使用 doc

    2024年02月12日
    浏览(52)
  • k8s重启报错:Get “http://localhost:8080/api?timeout=32s“: dial tcp [::1]:8080: connect: connection refuse

    单从报错可以看出,kubectl 没有使用到证书与k8s api通信,在初始化集群的时候要想使用kubectl需要,申明证书变量 export KUBECONFIG=/etc/kubernetes/admin.conf ,重启之后 KUBECONFIG 变量失效了。所有需要重新声明,并加入过/etc/profile 全局变量文件。

    2024年04月27日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包