栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

envoy入门(2)(k8s环境)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

envoy入门(2)(k8s环境)

今天,让我们一起来在k8s环境下,体验一下envoy.

环境说明:

  • ubuntu 20.04.2 三台
  • k8s: v1.22.2,1个master节点 + 2 个worker节点
  • Harbor-2.4 ,域名:hb.cn
  • docker:

实验的目标:

使用envoy POD做反向代理,访问另一个POD tomcat(业务容器),并通过NodePort的方式,把envoy的服务暴露去出,实现可以在k8s中任意node节点上访问,如下。

操作步骤:

第1步:准备tomcat 的文件.

 上图中设置了tomcat服务的名称为:tomcat-9-svc,端口为80.

第2步:部署到k8s中。

第3步:准备一份envoy.yaml。

设置了监听10000端口,访问时跳转到集群的tomcat-9-svc服务的80端口。

admin:
  address:
    socket_address: { address: 127.0.0.1, port_value: 9901 }

static_resources:
  listeners:
    - name: listener_0
      address:
        socket_address: { address: 0.0.0.0, port_value: 10000 }
      filter_chains:
        - filters:
            - name: envoy.filters.network.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
                stat_prefix: ingress_http
                codec_type: AUTO
                route_config:
                  name: local_route
                  virtual_hosts:
                    - name: local_service
                      domains: ["*"]
                      routes:
                        - match: { prefix: "/" }
                          route: { cluster: some_service }
                http_filters:
                  - name: envoy.filters.http.router
                    typed_config:
                      "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router

  clusters:
    - name: some_service
      connect_timeout: 0.25s
      type: LOGICAL_DNS
      lb_policy: ROUND_ROBIN
      load_assignment:
        cluster_name: some_service
        endpoints:
          - lb_endpoints:
              - endpoint:
                  address:
                    socket_address:
                      address: tomcat-9-svc
                      port_value: 80

第4步:创建configmap.

查看一个ConfigMap:

第5步:准备一份k8s部署的yaml文件。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    run: envoy
  name: envoy
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    run: envoy
  name: envoy
spec:
  replicas: 1
  selector:
    matchLabels:
      run: envoy
  template:
    metadata:
      labels:
        run: envoy
    spec:
      containers:
      - image: hb.cn/repo/envoy-dev:1.23.0-dev
        name: envoy
        volumeMounts:
        - name: envoy-config-101
          mountPath: "/etc/envoy"
          readOnly: true
      volumes:
      - name: envoy-config-101
        configMap:
          name: envoy-config-101

---
apiVersion: v1
kind: Service
metadata:
  name: envoy-svc
spec:
  selector:
    run: envoy
  type: NodePort
  ports:
    - port: 80
      nodePort: 31234
      targetPort: 10000

以上配置几点说明如下:

  • hb.cn/repo/envoy-dev:1.23.0-dev,是我harbor私服上的envoy镜像,也可以使用docker hub上的。
  • 使用envoy-config-101 configmap,并挂到容器里的/etc/envoy目录中,名称为:envoy.yaml。
  • 把容器里的10000端口,以NodePort方式,暴露为31234端口

第6步:部署envoy pod.

第7步:访问k8s的其中一个woker节点,验证是否成功。

 可以看到,上面使用是的envoy的31234 服务端口,但显示的是tomcat的输出,证明转发(反向代理)是成功的。tomcat上没有任何的war包,所以看到404。

参考:

envoy入门(1)(docker环境)_湾区的候鸟的博客-CSDN博客

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/869256.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号