[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
  • 可对集群外部提供访问端口
  • 集群内部可通过服务名字访问

[Kubernetes]3. k8s集群Service详解_第1张图片

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

[Kubernetes]3. k8s集群Service详解_第2张图片

 (2).新建service.yaml

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

 
 

你可能感兴趣的:(Kubernetes,docker,服务器,kubernetes,容器,云原生,k8s,service)