1.Pod与Service的关系
Pod出现故障以后Deployment会根据策略重启Pod,但是重启Pod会生成新的IP,需要引入Service概念保证访问正常
Service
- 防止Pod失联
- 定义一组Pod访问策略
- 支持ClusterIP,NodePort以及LoadBanlancer三种类型
- Service的底层主要有Iptables和IPVS两种网络模式
2.Service的定义
Pod与Service的关系
- 通过label-selector相关联
- 通过Service实现Pod的负载均衡(TCP/UDP 4层)
示例service.yaml
#版本 apiVersion: v1 #类型是service kind: Service metadata: name: my-service namespace: default spec: #service默认clusterIP clusterIP: 10.10.10.123 ports: - name: http #service端口 port: 80 protocol: TCP #后端容器端口 targetPort: 80 #标签选择器关联后端的一组Pod selector: run: nginx
创建
kubectl apply -f service.yaml
因为该service标签匹配一个nginx所以如果没有创建nginx的deployment需要创建一个
kubectl run nginx --replicas=3 --image=nginx --port=80
创建以后可以查看有对应标签的pod
# kubectl get pod -l run=nginx NAME READY STATUS RESTARTS AGE nginx-57867cc648-b4rct 1/1 Running 0 9m53s nginx-57867cc648-qgbwl 1/1 Running 0 9m53s nginx-57867cc648-qmbbw 1/1 Running 0 9m53s
查看
# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.10.10.1 <none> 443/TCP 6d23h my-service ClusterIP 10.10.10.123 <none> 80/TCP 6m25s
其中name为kubernetes的service是k8s安装以后默认的一个service默认IP的service的第一个IP 10.10.10.1端口是443
默认的svc的作用是负载均衡后端master的IP
service需要动态感知后端ip变化可以通过以下命令查看,每个svc管理后端的一组容器
# kubectl get endpoints NAME ENDPOINTS AGE kubernetes 192.168.1.63:6443,192.168.1.64:6443 6d23h my-service 172.17.41.2:80,172.17.55.2:80,172.17.55.4:80 9m59s
3.service类型
4.Service代理模式
5.DNS
原文地址:https://www.cnblogs.com/minseo/p/12425623.html
时间: 2024-11-06 09:39:12