关于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

 

posted @ 2019-06-27 16:08  诗码者  阅读(1547)  评论(0编辑  收藏  举报