k8s整合istio配置gateway入口、配置集群内部服务调用管理(最新推荐)

 更新时间:2023年08月21日 14:55:12   作者:想花  
这篇文章主要介绍了k8s整合istio配置gateway入口、配置集群内部服务调用管理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、 istio gateway使用demo

kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: ngdemo-gateway
  namespace: ssx
spec:
  selector:
    istio: ingressgateway # use Istio default gateway implementation
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "tomcat.shenshuxin.cn"
EOF
kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: ngdemo-virtualservice
  namespace: ssx
spec:
  hosts:
  - "tomcat.shenshuxin.cn"
  gateways:
  - ngdemo-gateway
  http:
  - match:
    - uri:
        prefix: /v1
    route:
    - destination:
        port:
          number: 8082
        host: demo-tomcat-for-ingress-name
  - route:
    - destination:
        port:
          number: 8081
        host: demo-tomcat-for-ingress-name
EOF

curl -HHost:tomcat.shenshuxin.cn “http://node101:32318”

端口号是ingressgateway服务的nodeport

查看方式: kubectl get service -n istio-system | grep istio-ingressgateway

找到80端口对应的nodeport即可

二、istio部署测试服务之间的调用通信

部署两个tomcat服务pod并且配置serivce服务

注意部署的两个deployment需要指定一下版本标签 version: ??

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-tomcat-for-istio-name1
  namespace: ssx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-tomcat-for-istio-dm
  template:
    metadata:
      labels:
        app: demo-tomcat-for-istio-dm
        version: vv11
    spec:
      containers:
          - image: 'docker.io/library/tomcat:8'
            imagePullPolicy: IfNotPresent
            name: demo-tomcat-c
            ports:
              - containerPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-tomcat-for-istio-name2
  namespace: ssx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-tomcat-for-istio-dm
  template:
    metadata:
      labels:
        app: demo-tomcat-for-istio-dm
        version: vv22
    spec:
      containers:
          - image: 'docker.io/library/tomcat:8'
            imagePullPolicy: IfNotPresent
            name: demo-tomcat-c
            ports:
              - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: demo-tomcat-for-istio-sv-lb
  name: demo-tomcat-for-istio-name
  namespace: ssx
spec:
  ports:
    - name: tomcat8080
      port: 8081
      protocol: TCP
      targetPort: 8080
  selector:
    app: demo-tomcat-for-istio-dm
  type: ClusterIP

通过istio的虚拟服务进行流量管理

注意这里的hosts名称(demo-tomcat-for-istio-name)要和上面的service配置的一致,这样istio才可以进行流量管理。这里设置了请求转发策略,并且设置自定义响应头

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: demo-tomcat-istio-vs
  namespace: ssx
spec:
  hosts:
    - demo-tomcat-for-istio-name
  http:
    - headers:
        request:
          set:
            test: "true"
      route:
        - destination:
            host: demo-tomcat-for-istio-name
            subset: vv11
          weight: 10
          headers:
            response:
              set:
                ssxppp: abc
        - destination:
            host: demo-tomcat-for-istio-name
            subset: vv22
          headers:
            response:
              set:
                ssxppp: 123
          weight: 90
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: demo-tomcat-istio-dr
  namespace: ssx
spec:
  host: demo-tomcat-for-istio-name
  subsets:
    - name: vv11
      labels:
        version: vv11
    - name: vv22
      labels:
        version: vv22

验证

随便找一个集群中的通过istio代理的服务,执行curl命令:

# curl -I demo-tomcat-for-istio-name.ssx:8081
HTTP/1.1 200 OK
accept-ranges: bytes
etag: W/"8-1691939281480"
last-modified: Sun, 13 Aug 2023 15:08:01 GMT
content-type: text/html
content-length: 8
date: Tue, 15 Aug 2023 00:54:15 GMT
x-envoy-upstream-service-time: 2
server: envoy
ssxppp: fs

调用的方式是service名称.命名空间名称:端口号。

curl -I 命令是只显示响应头

到此这篇关于k8s整合istio配置gateway入口、配置集群内部服务调用管理的文章就介绍到这了,更多相关k8s整合istio配置gateway入口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • k8s中kubeconfig的配置以及使用详解

    k8s中kubeconfig的配置以及使用详解

    每当与集群交互的时候少不了的是身份认证,使用kubeconfig(即证书)和token两种认证方式是最简单也最通用的认证方式,下面这篇文章主要给大家介绍了关于k8s中kubeconfig的配置以及使用的相关资料,需要的朋友可以参考下
    2022-01-01
  • Kubekey安装Kubernetes-1.24.8的详细过程

    Kubekey安装Kubernetes-1.24.8的详细过程

    这篇文章主要介绍了Kubekey安装Kubernetes-1.24.8的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • 云原生环境中的容器安全最佳实践指南

    云原生环境中的容器安全最佳实践指南

    云原生架构是一种现代软件开发方法,旨在通过充分利用云计算的优势,提高应用程序的灵活性、可扩展性和维护性,这篇文章主要介绍了云原生环境中容器安全的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-04-04
  • k8s clientConfig和rawConfig区别解析

    k8s clientConfig和rawConfig区别解析

    k8s clientConfig和rawConfig区别k8s.io/client-gov0.28.2基于kubeconfig可以创建clientConfig和rawConfig,两者区别在于,clientConfig包含了访问kube-apiserver的地址和认证鉴权信息,感兴趣的朋友一起看看吧
    2025-03-03
  • 举例详解k8s是如何实现自动扩缩的

    举例详解k8s是如何实现自动扩缩的

    Kubernetes(简称k8s)是一个开源的,用于自动部署、扩展和管理容器化应用程序的系统,这篇文章主要介绍了k8s是如何实现自动扩缩的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-07-07
  • 一篇文章搞懂K8S高级特性

    一篇文章搞懂K8S高级特性

    这篇文章主要给大家介绍了关于K8S高级特性的相关资料,文中通过时实例代码以及图文介绍的非常详细,对大家学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-11-11
  • k8s强制删除一个Pod的详细步骤

    k8s强制删除一个Pod的详细步骤

    有时候遇到node宕机或者失联太久导致pod一直处于Terminating状态,kubectl delete又删不掉,其实这个pod已经确定已经死了,需要强制把他摘掉,这篇文章主要给大家介绍了关于k8s强制删除一个Pod的详细步骤,需要的朋友可以参考下
    2024-11-11
  • K8s内存溢出问题剖析之排查与解决过程

    K8s内存溢出问题剖析之排查与解决过程

    这篇文章主要介绍了K8s内存溢出问题剖析之排查与解决过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • kubernetes(k8s)安装metrics-server实现资源使用情况监控方式详解

    kubernetes(k8s)安装metrics-server实现资源使用情况监控方式详解

    这篇文章主要介绍了kubernetes(k8s)安装metrics-server实现资源使用情况监控,包括Metrics Server下载方式, k8s集群安装部署metrics的问题,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Kubernetes从私有镜像仓库拉取容器镜像时的身份验证方式

    Kubernetes从私有镜像仓库拉取容器镜像时的身份验证方式

    Kubernetes从私有镜像仓库拉取容器镜像时,需要使用私有仓库的凭证进行身份验证,这些凭证可以存储在`private-registry-auth`这个Secret中,然后在Pod或ServiceAccount中指定使用该Secret,这样可以确保Pod在拉取镜像时能够正确进行身份验证
    2026-01-01

最新评论