service存在的意义
- 防止Pod失联,准备找到提供同一个服务的
- 定义一组Pod的访问策略(负载均衡)
Pod与Service的关系
- Service通过标签关联一组Pod
- Service使用iptables或者ipvs为一组Pod提供负载均衡能力
- 逻辑转发策略
三种创建类型
- [root@k8s-master1 7]# kubectl expose deployment nginx --port=80 --target-port=8080 --dry-run=client -o yaml > service.yaml
- service 可以理解为基于ip+端口实现的。
- 集群内走的clusterIP
- 集群外部 node-port
多端口定义
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: nginx
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
- name: https
port: 443
protocol: TCP
targetPort: 8080
selector:
app: nginx
service/nginx NodePort 10.108.108.39 <none> 80:32133/TCP,443:31130/TCP 21d
<任意NodeIP>:
- NodePort:在每个节点上启用一个端口来暴露服务,可以在集群 外部访问。也会分配一个稳定内部集群IP地址。
- 访问地址:<任意NodeIP>: 端口范围:30000-32767
- kubectl get pod
nginx-nodeport NodePort 10.103.12.8 <none> 80:30142/TCP 126m
如何指定nodePort
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: nginx-nodeport
spec:
type: NodePort
ports:
- port: 80
protocol: TCP
targetPort: 80
nodePort: 30000
selector:
app: nginx
nginx-nodeport NodePort 10.103.12.8 <none> 80:30000/TCP 141m
|