layout | title | subtitle | date | author | header-img | catalog | tags | |||
---|---|---|---|---|---|---|---|---|---|---|
post |
K8S学习笔记|05-Service |
Kubernetes |
2023-08-31 |
Claire |
img/post-bg-github-cup.jpg |
true |
|
前面提到Service是一个访问容器,主要了解Service如何为Pod做反向代理和负载均衡
Service和实际的Pod通过label来绑定,不受变化IP的影响
Service和Pod的网络映射关系通过iptables进行配置
Service拥有一个ClusterIP,由K8S的iptables规则管理
K8S Cluster的每一个节点都配置了相同的iptables规则,所有Cluster内都能通过Service的ClusterIP访问它
除了ClusterIP和iptables规则,还可以通过DNS来访问Service
kubeadm默认安装kube-dns组件
- ClusterIP 只有Cluster内的节点和Pod可访问
- NodePort 通过Cluster的静态端口提供服务,通过 NodeIp:NodePort 访问,实际是通过增加iptables规则,支持负载均衡到每一个Pod
- nodePort如果不指定是使用随机选择的,也可以手动指定,随机选择的范围在30000~
- nodePort是节点上监听的端口
- port是ClusterIp上监听的应用的端口
- targetPort是Pod监听的端口
- nodePort和port监听到的请求都会转到tartgetPort上
LoadBalancer 使用cloud provider特有的 load balancer对外提供服务