码迷,mamicode.com
首页 > Web开发 > 详细

kubernetes 暴露服务端口的几种方式

时间:2019-08-15 22:49:49      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:dig   template   实现   监听   节点   type   href   stack   默认   

kubernetes 暴露服务端口的几种方式

如果希望将 Service 暴露在一个外部IP地址上。 Kubernetes 支持4种实现方式,详细如下:

1:集群内部实现访问:Clusterip

Clusterip是集群内部的私有ip,在集群内部访问服务非常方便,也是kuberentes集群默认的方式,直接通过service的Clusterip访问,也可以直接通过ServiceName访问。集群外部则是无法访问的。

2:集群外部方式访问:NodePort

NodePort在kubenretes里是一个早期广泛应用的服务暴露方式。Kubernetes中的service默认情况下都是使用的ClusterIP这种类型,这样的service会产生一个ClusterIP,这个IP只能在集群内部访问,要想让外部能够直接访问service,需要将service type修改为 nodePort。将service监听端口映射到node节点。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-dm
spec:
  replicas: 2
  template:
    metadata:
      labels:
        name: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:alpine
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 80

---

apiVersion: v1
kind: Service
metadata:
  name: nginx-svc
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30004
      protocol: TCP
  selector:
    name: nginx

创建

kubectl create -f nginx-ds.yaml

访问测试

在集群之外,可以通过任何一个node节点的 ip:nodeport 都可以访问集群中服务

3:LoadBalancer

LoadBlancer Service 是 kubernetes 深度结合云平台的一个组件;当使用 LoadBlancer Service 暴露服务时,实际上是通过向底层云平台申请创建一个负载均衡器来向外暴露服务;目前 LoadBlancer Service 支持的云平台已经相对完善,比如国外的 GCE、DigitalOcean,国内的 阿里云,私有云 Openstack 等等,由于 LoadBlancer Service 深度结合了云平台,所以只能在一些云平台上来使用.

4:Ingress

Ingress是自kubernetes1.1版本后引入的资源类型。必须要部署Ingress controller才能创建Ingress资源,Ingress controller是以一种插件的形式提供。

Ingress 使用比较广泛的有:nginx 和 traefik,个人推荐使用traefik。

Traefik 配置使用方法:

https://blog.51cto.com/michaelkang/2429929

kubernetes 暴露服务端口的几种方式

标签:dig   template   实现   监听   节点   type   href   stack   默认   

原文地址:https://blog.51cto.com/michaelkang/2429935

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!