k8s---ingress对外服务(traefik)

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

目录

ingress的证书访问

traefik

traefik的部署方式:

deamonset

deployment

nginx-ingress与traefix-ingress相比较

nginx-ingress-controller

ui访问

deployment部署


ingress的证书访问

ingress实现https代理访问:

需要证书和密钥

创建证书 密钥

secrets 保存密钥信息,部署pod时把secrets挂载到pod

创建密钥和证书

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

#创建密钥和证书
openssl req -x509 -sha256 -nodes -days 356 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/O=nginxsvc"
req: 生成证书文件的
x509: 生成x.509自签名的证书
-sha256:表示使用sha-256的散列算法
-nodes:表示生成的密钥不加密
-days 365: 证书有效期是365天
-newkey rsa:2048: RSA的密钥对,长度2048位
-keyout tls.key -out tls.crt: 密钥文件 key 证书文件 crt
-subj"/CN=nginxsvc/O=nginxsvc”: 主题,CN common name O : organization

#用secret保存密钥和证书
kubectl create secret tls tls-secret --key tls.key --cert tls.crt
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-https
  labels:
    app: https
spec:
  replicas: 3
  selector:
    matchLabels:
      app: https
  template:
    metadata:
      labels:
        app: https
    spec:
      containers:
        - name: nginx
          image: nginx:1.22
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    app: https
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress-https
spec:
  tls:
    - hosts:
      - www.123ccc.com
      secretName: tls-secret
#加密的配置保存在ingress,请求---ingress-controller--ingress---转发到service
#在代理进行时,就要先验证密钥对,然后再把请求转发service到相应的pod
  rules:
    - host: www.123ccc.com
      http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: nginx-svc
              port:
                number: 80

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

访问
https://www.123ccc.com:31505/
或
curl -k https://www.123ccc.com:31505

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

nginx的登录账户认证

yum -y install httpd
#借用httpd的htpasswd
htpasswd -c auth zyg
New password: 123456
Re-type new password: 123456

#生成加密
kubectl create secret generic basic-auth --from-file=auth

basic-auth.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-auth
  annotations:
#开启认证模块的配置
    nginx.ingress.kubernetes.io/auth-type: basic
#设置认证类型为basic,这是k8s自带的认证加密的模块
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
#把认证的加密模块导入到ingress当中
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required -lyw'
#设置认证窗口的提示信息。
spec:
  rules:
  - host: www.zyg1.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-svc
            port:
              number: 80

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

​访问
https://www.zyg1.com:31505

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

重定向

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-rewrite
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: https://www.zyg1.com:31505
#访问页面会跳转到指定的页面。
spec:
  rules:
  - host: www.liukgc.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-svc
            port:
              number: 80
kubectl apply -f ingress-rewirte.yaml

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

访问
​​https://www.liukgc.com:31505

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

traefik

traefik ingress-controller--deployment

traefik是一个为了让部署微服务更加快捷而诞生的一个http方向代理,负载均衡,

traefix设计时就能够实时的和k8s api交互,感知后端口service以及pod的变化,可以自动更新配置和重载。

可以自带感知后端变化

traefik的部署方式:

deamonset

优点-特点:每个节点都会部署一个traefik,节点感知可以自动发现,更新容器的配置。不需要手动重载

缺点:占用资源大,大型集群中,deamonset可能会运行多个traefik实例,尤其是节点上不需要大量容器运行的情况下,无法扩缩容

部署对外集群,对外的业务会经常变更,deamonset可以更好的发现服务配置变更

deployment

优点:集中办公控制,可以使用少量的实例来运行处理整个集群的流量。更容易升级和维护。

缺点:deployment的负载均衡不会均分到每个节点。需要手动更新。他无法感知容器内部配置的变化。

部署对内集群:对内的相对稳定,更新和变化也比较少,适合deployment.

traffic-type:internal 对内服务

traffic-type:external 对外服务

nginx-ingress与traefix-ingress相比较

nginx-ingress 相对较慢

traefix-ingress 自带更新的的重载快,更方便

工作原理都一样,都是7层代理,都可以动态的更新配置,都可以自动发现服务

traefik的并发能力只有nginx-ingress的6成 60%

nginx-ingress-controller

ui访问

#权限
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-rbac.yaml

#deamonset的
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-ds.yaml

#deployment的
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-deployment.yaml

#ui的
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/ui.yaml

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

kubectl apply -f  traefik-rbac.yaml
kubectl apply -f  traefik-deployment.yaml
kubectl apply -f  ui.yaml

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

访问ui
http://192.168.10.10:30488/dashboard/

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

deployment部署

123.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-traefix
  labels:
    nginx: traefik
spec:
  replicas: 3
  selector:
    matchLabels:
      nginx: traefik
  template:
    metadata:
      labels:
        nginx: traefik
    spec:
      containers:
        - name: nginx
          image: nginx:1.22
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-traefix-svc1
spec:
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    nginx: traefik
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-traefix-test1
spec:
  rules:
    - host: www.yyw.com
      http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: nginx-traefix-svc1
              port:
                number: 80

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

做映射

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

访问
http://www.yyw.com:30227/


k8s---ingress对外服务(traefik),https,ssl,网络协议,kubernetes,容器,云原生

总结

nginx-ingress-controller

deployment+loadbalancer:要公有云提供的负载均衡的公网地址

daemonset+hostbnetwork+nodeselector: 和节点服务共享网络,一个节点只能部署一个controller pod,使用宿主机的端口性能最好,适合大并发

deployment+NodePort:最常见、最常用,最简单的方法。但行呢个不太好,多了一层nat地址转发

适用于大并发

traefik-ingress-controller:

daemonset 对外 可以自动更新容器的配置 host节点网络 deployment 对内 无法自动自动更新配置 Nodeport

适用于小的集群,并发是ingress的

https: 1.生成证书密钥 2.创建secret,保存证书和密钥

3.创建ingress把secret导入

加密认证: 1、htpasswd -c auth 认证文件只能是auth 2、 创建ingress:

nginx.ingress.kubernets.io/auth-type: basic
#声明认证类型
nginx.ingress.kubernets.io/auth-secret: basic-auth
#导入认证的密钥文件,sercet的方式存储集群当中

重定向:

nginx.ingress.kubernetes.io/rewrite-target: https://123ccc.com:31505

在ingress文件当中声明的URI都会跳转到这个地址文章来源地址https://www.toymoban.com/news/detail-805628.html

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

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

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

相关文章

  • k8s的对外服务ingress

    1、service的作用体现在两个方面 (1)集群内部:不断跟踪pod的变化,更新deployment中的pod对象,基于pod的ip地址不断变化的一种服务发现机制 (2)集群外部:类似于负载均衡器,把流量ip+端口,不涉及转发url(http/https),把请求转发到pod当中 2、service nodeport 容器端口——s

    2024年01月22日
    浏览(41)
  • k8s的对外服务--ingress

    service作用体现在两个方面 1、集群内部 不断跟踪pod的变化,更新endpoint中的pod对象,基于pod的IP地址不断变化的一种服务发现机制 2、集群外部 类似负载均衡器,把流量ip+端口,不涉及转发url(http,https),把请求转发到pod nodePort:容器端口----service端口----nodePort,设定了no

    2024年01月20日
    浏览(49)
  • k8s 对外服务之 Ingress

    service的作用体现在两个方面,对集群内部,它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了ip不断变化的pod的服务发现机制;对集群外部,他类似负载均衡器,可以在集群内外部对pod进行访问。 在Kubernetes中,Pod的IP地址和service的ClusterIP仅可以在集群网络内部使用,

    2024年02月16日
    浏览(43)
  • k8s之对外服务ingress

    ①集群内部: 不断跟踪pod的变化,不断更新endpoint中的pod对象,基于pod的IP地址不断变化的一种服务发现机制(endpoint存储最终对外提供服务的IP地址和端口) ②集群外部: 类似负载均衡器,不涉及转发url(不涉及http和https),把流量(IP地址+端口)转发到pod中 (1)nodeport:

    2024年01月18日
    浏览(48)
  • 【K8S 云原生】K8S的对外服务—ingress

    目录 一、K8S的Service 1、Service的作用 2、Service类型: 二、ingress 1、ingress的组成: 2、ingress资源的定义项: 三、nginx-ingress-controller暴露服务端的方式 1、Deployment+LoadBalancer模式: 1、工作流程图: 2、Daemonset+hostnetwork+nodeSelector模式: 1、工作流程图 2、实验: 3、deployment+NodePort

    2024年01月18日
    浏览(47)
  • k8s---ingress对外服务(ingress-controller)

    k8s的对外服务,ingress service作用现在两个方面: 1、集群内部:不断跟踪的变化,更新endpoint中的pod对象,基于pod的ip地址不断变化的一种服务发现机制。 2、集群外部:类似于负载均衡器,把流量(ip+端口),不涉及转发url(http https),把请求转发到pod当中。 service: NodePo

    2024年01月19日
    浏览(48)
  • k8s svc通过externalIPs并结合Keepalived对外暴露服务

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

    2024年02月05日
    浏览(64)
  • 【Kubernetes】Kubernetes对外服务之Ingress

      service的作用体现在两个方面,对集群内部,它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了ip不断变化的pod的服务发现机制;对集群外部,他类似负载均衡器,可以在集群内外部对pod进行访问。   在Kubernetes中,Pod的IP地址和service的ClusterIP仅可以在集群网络内

    2024年02月12日
    浏览(46)
  • [Kubernetes]9. K8s ingress讲解借助ingress配置http,https访问k8s集群应用

    前面讲解了使用Helm部署mysql集群,这里来看看使用Ingress搭建负载均衡功能 功能类似 Nginx ,可以根据域名、路径把请求转发到不同的 Service , Ingress 为外部访问集群提供了一个 统一 入口, 避免 了 对外暴露集群端口 ,可以配置 https,http访问集群应用,接下来看看如何通过腾讯云来

    2024年01月22日
    浏览(58)
  • k8s---ingress实现https代理访问

    创建证书 密钥 secrets保存密钥信息,部署pod时把secrets挂载到pod 也可以实现负载均衡。 traefik ingress controller traefik 是一个为了让部署微服务更加快捷而诞生的一个http反向代理,负载均衡。 traefik设计时就能够实时的和k8s API交互,可以感知后端service和pod的变化,还可以自动更新

    2024年01月19日
    浏览(42)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包