zoukankan      html  css  js  c++  java
  • 关于kubernetes服务对外提供访问

    一、kubernetes exposed servcie

    暴露服务的几种方式:

           LoadBalancer

           NodePort

           Ingress

           HostNetwork

           HostPort

    LoadBalancer只能配置在serveice,需要云运营商提供支持。HostPort应用不是很多,特殊情况下可能会用到。HostNetwork用的时候设置为true。

    本文主要介绍NodePort、ingress

    1、NodePort

    NodePort是暴露在全局的方式,使用了NodePort整个集群的node节点ip都可以访问到这个服务端口,NodePort的端口范围默认是30000~32767,这个可以在启动的时候通过--service-node-port-range指定。

    apiVersion: v1
    kind: Service
    metadata:
      name: kafka-1
    spec:
      type: NodePort
      selector:
        statefulset.kubernetes.io/pod-name: kafka-1
      ports:
      - protocol: TCP
        port: 9092
        nodePort: 30092

    如果只希望流量只走部署了pod的node节点可以使用

    apiVersion: v1
    kind: Service
    metadata:
      name: kafka-1
    spec:
      type: NodePort
      externalTrafficPolicy: Local
      selector:
        statefulset.kubernetes.io/pod-name: kafka-1
      ports:
      - protocol: TCP
        port: 9092
        nodePort: 30092

    2、Ingress

    ingress需要配合ingress-controller使用,常用的controller有nginx、traefik、kong等

    我们使用的是kong-ingress-controller具体的使用过程参考https://www.cnblogs.com/cuishuai/p/10737737.html

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: foo-bar
      namespace: istio-system
      annotations:
        plugins.konghq.com: transform-request-to-dummy,echo-file-log
    spec:
      rules:
      - host: foo.test.evo.com
        http:
          paths:
          - path: /
            backend:
              serviceName: http-svc
              servicePort: 80
    apiVersion: configuration.konghq.com/v1
    kind: KongPlugin
    metadata:
      name: transform-request-to-dummy
      namespace: istio-system
      labels:
        global: "false"
    disable: false
    config:
      replace:
        headers:
          - 'host:llll'
      add:
        headers:
          - "x-myheader:my-header-value"
    plugin: request-transformer
    apiVersion: configuration.konghq.com/v1
    kind: KongIngress
    metadata:
      name: strip-path
      namespace: istio-system
    route:
      strip_path: false
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: tekton-dashboard
      namespace: tekton-pipelines
      annotations:
        kubernetes.io/ingress.class: "kong"
    spec:
      rules:
      - host: tekton.test.evo.com
        http:
          paths:
          - path: /
            backend:
              serviceName: tekton-dashboard
              servicePort: 9097
  • 相关阅读:
    Centos启动Cassandra交互模式失败:No appropriate python interpreter found
    删除Kafka的topic
    《面向中国资本市场应用的分布式总账白皮书》笔记
    搭建Kafka集群(3-broker)
    【转】矩阵求导计算规则
    二次型求导
    解决: org.iq80.leveldb.DBException: IO error: C:data rie00945.sst: Could not create random access file.
    SSH遇见的问题
    解决:Redis:java.util.NoSuchElementException: Unable to validate object at
    【转】mysql查询结果输出到文件
  • 原文地址:https://www.cnblogs.com/cuishuai/p/11097690.html
Copyright © 2011-2022 走看看