[Kubernetes]3. k8s集群Service详解

在上一节讲解了k8s 的pod,deployment,以及借助pod,deployment来部署项目,但会存在问题:

  • 每次只能访问一个 pod,没有负载均衡自动转发到不同 pod
  • 访问还需要端口转发
  • Pod重创后IP变了,名字也变了

针对上面的问题,可以借助Service来解决,下面就来看看Service怎么使用

一.Service详解

1.特性

  • Service 通过 label 关联对应的 Pod
  • Servcie 生命周期不跟 Pod 绑定,不会因为 Pod 重新创建改变 IP
  • 提供了负载均衡功能,自动转发流量到不同 Pod
  • 可对集群外部提供访问端口
  • 集群内部可通过服务名字访问

2.创建 Service

Service是通过label关联对应的Pod,下面就来创建Service,首先创建一个deployment.yaml,然后创建service.yaml,通过service.yaml的label标签 goweb 跟对应的deployment.yam中的Pod 关联上

(1).新建deployment.yaml

apiVersion: apps/v1
#类型deploymnt
kind: Deployment
metadata:#部署的名字name: goweb
spec:#创建Pod的副本数replicas: 2#定义标签选择器:定义Deployment如何找到要管理的Pod,与template的label(标签)对应selector:matchLabels:app: goweb  #需要和下面的labels统一#定义 Pod 相关数据template:metadata:labels:app: goweb#指定该资源的内容spec:# 定义容器,可以多个containers:- name: test-goweb# 容器名字image: k8sgoimg # 镜像# [Always | Never | IfNotPresent] #获取镜像的策略 Alawys表示下载镜像 IfnotPresent表示优先使用本地镜像,否则下载镜像,Nerver表示仅使用本地镜像imagePullPolicy: IfNotPresent

 (2).新建service.yaml

创建 一个Service,新建service.yaml通过标签goweb跟对应的Pod关联上