Service

1. 什么是service(服务的发现和负载均衡)

①集群内的容器升级或故障下线产生新的pod时,容器ip是不断变化的,service在这中间提供vip地址和服务发现的作用,无论容器ip如何变化,service总能通过虚拟机地址找到对应的pod容器提供服务。

②当一个应用服务有多个容器提供服务时,service可自动的将外部请求合理的,按照比例分发到所有的容器上,实现负载均衡。

2.service与pod容器如何关联

与前面controller和pod的关联模式一样,通过labels标签建立关联, key.value键值对标识,例如:

selector:

       app:nginx 

labels:

       app:nginx 

3.service常用的三种类型

kubectl expose --help  #执行这条命令末尾位置能看到下面一行内容。

--type='': Type for this service: ClusterIP, NodePort, LoadBalancer, or ExternalName. Default is 'ClusterIP'. 

① ClusterIP :默认参数,供集群内部使用

② NodePort : 对外访问集群内部应用使用

③ LoadBalancer : 对外访问集群内部应用使用,使用公有云中的LB负载均衡器提供服务。

示例:

①分别创建一个clusterip和nodeport的yaml模板

创建默认的clusterip的service

kubectl expose deployment web --port=80 --target-port=80 --name=clusteripp --dry-run -o yaml > clusteripp.yaml   

创建类型为nodeport的service          

kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=nodeportt --dry-run -o yaml > nodeportt.yaml  

 ②查看内容

nodeport仅声明了类型,k8s会自动分配一个随机端口,如需自定义端口,在-port 下面加一行nodeport: 36666 即可,注意对齐

3.分别创建这两个svc,查看效果

 

nodeport端口类型可以外部访问,使用任意K8S节点ip:31588端口即可访问。

 

 

 

posted @ 2021-02-04 15:44  尤小清  阅读(743)  评论(0编辑  收藏  举报