6.2.1 创建Service资源

创建Service对象的常用方法有两种:一是直接使用“kubectl expose”命令,这在前面第三章中已经介绍过其使用方式;另一个的使用资源配置文件,它与此前使用资源清单配置其他资源的方法类似。定义Service资源对象时,spec的两个较为常用的内嵌字段分别是为selector和ports,分别用于定义使用的标签选择器和要暴露的端口。下面的配置清单是一个Service资源示例:

apiVersion: v1
kind: Service
metadata:
  name: myapp-svc
spec:
  selector:
    app: myapp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

Service资源myapp-svc通过标签选择器关联至标签为“app=myapp”的各Pod对象,它会自动创建名为myapp-svc的Endpoints资源对象,并自动配置一个ClusterIP,暴露的端口由port字段进行指定,后端各Pod对象的端口则由targetPort给出,也可以使用同port字段的默认值。myapp-svc创建完成后,使用下面的命令既能获取相关信息输出以了解资源的状态:

**[terminal]
**[delimiter $ ]**[command kubectl get svc myapp-svc]
NAME        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
myapp-svc   ClusterIP   10.233.16.105   <none>        80/TCP    28s

上面命令中的结果显示,myapp-svc的类型为默认的ClusterIP,其使用的地址自动配置为10.107.208.93。此类型的Service对象仅能通过此IP地址接受来自于集群内部的客户端Pod中的请求。若集群上存在标签为“app=myapp”的Pod资源,则他们会被关联和创建,作为此Service对象的后端Endpoint对象,并负责接受相应的请求流量。类似下面的命令可用于获取Endpoint资源的端点列表,于其相关的端点是由第五章中的Deployment控制器创建的Pod对象的套接字信息组成:

**[terminal]
**[delimiter $ ]**[command kubectl get endpoints myapp-svc]
NAME        ENDPOINTS                                          AGE
myapp-svc   10.233.105.43:80,10.233.70.42:80,10.233.90.99:80   8m29s

也可以不为Service资源指定.spec.selector属性值,其关联的Pod资源可由用户手动创建Endpoints资源进行定义。

results matching ""

    No results matching ""