Kubernetes service 使用定义
Kubernetes service 使用定义
介绍说明
• 防止Pod失联
• 定义一组Pod的访问策略
• 支持ClusterIP,NodePort以及LoadBalancer三种类型
• Service的底层实现主要有Iptables和IPVS二种网络模式
Pod与Service的关系
• 通过label-selector相关联
• 通过Service实现Pod的负载均衡( TCP/UDP 4层)
Service 定义
# 版本 apiVersion: v1 # 资源对象 kind: Service # 元数据 metadata: # 指定service名称 name: my-service # 命名空间 namespace: default spec: # 分配IP clusterIP: 10.0.0.1 # 指定端口 ports: # 端口名称 - name: http # 指定service端口 port: 80 # service使用协议 protocol: TCP # 容器端口,转发后端容器端口 targetPort: 80 # 标签选择器,通过标签匹配关联的pod selector: # 标签 app: nginx
实例
1、创建service yml文件
apiVersion: v1 kind: Service metadata: name: my-service namespace: default spec: clusterIP: 10.0.0.123 ports: - name: http port: 80 protocol: TCP targetPort: 80 selector: app: nginx
2、创建service
kubectl apply -f service.yaml
3、查看创建的service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-service ClusterIP 10.0.0.123 <none> 80/TCP 36s
4、动态感知查看分配到的Node
NAME ENDPOINTS AGE kubernetes 192.168.1.108:6443,192.168.1.109:6443 2d16h my-service <none> 2m54s nginx-service 172.17.1.2:80,172.17.1.3:80,172.17.1.6:80 44h nginx-service2 <none> 17h
注:每个service对应一个ENDPOINTS控制器,service则用来关联pod。
5、查看ENDPOINTS详细信息
Name: my-service Namespace: default Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"my-service","namespace":"default"},"spec":{"clusterIP":"10.0.0.12... Selector: app=nginx Type: ClusterIP IP: 10.0.0.123 Port: http 80/TCP TargetPort: 80/TCP Endpoints: <none> Session Affinity: None Events: <none>