【K8S】Service使用NodePort对外暴露应用

一、背景介绍

Pod是有生命周期的,当一个工作节点(node)销毁时,节点上运行的pods也会被销毁。ReplicationController会动态地在其他节点上创建Pod来保持应用程序的运行,每一个Pod都有一个独立的IP地址,甚至是同一个节点上的Pod。可以看出Pod的IP是动态的,它随Pod的创建而创建,随Pod的销毁而消失,这就引出一个问题:如果由一组Pods组合而成的集群来提供服务,那如何访问这些Pods呢?

Kubenetes的Service就是用来解决这个问题的。一个Service可以看作一组提供相同服务的Pods的对外访问接口,Service作用于哪些Pods是通过label selector来定义的,这些Pods能被Service访问,Pod之间的发现和路由(如应用中的前端和后端组件)由Kubernetes Service处理。

Service有四种type:

  • ClusterIP(默认)
  • NodePort
  • LoadBalancer
  • ExternalName

其中NodePort和LoadBalancer两类型的Services可以对外提供服务。

二、基于NodePort配置对外暴露服务

NodePort:对外暴露应用(集群外)。在每个节点上启用一个端口来暴露服务,可以在集群外部访问。

2.1 创建service.yaml

示例代码:

---
# service
apiVersion: v1
kind: Service
metadata:
  name: web-service
  namespace: web-space
spec:
  selector:
    app: web  # 指定关联Pod的标签
  type: NodePort  # 这里代表是NodePort类型
  ports:
    - port: 8080    # Service端口,供内部访问(和clusterIP对应,即ip:8080)
      protocol: TCP  # TCP协议
      targetPort: 8080  # 容器端口
      nodePort: 30001    # 对外暴露的端口,供外部调用

示例图片:
在这里插入图片描述

2.2 应用yaml

kubectl create -f service.yaml

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值