Service
Kubernetes 集群中有三类 IP 地址:
Node Network
Pod network(pod 网络)
Cluster Network
Service 的四种类型:
Defaults to ClusterIP. Valid options are ExternalName, ClusterIP, NodePort, and LoadBalancer
1、ExternalName:
适用于 k8s 集群内部容器访问外部资源,它没有 selector,也没有定义任何的端口和 Endpoint。
以下 Service 定义的是将 prod 名称空间中的 my-service 服务映射到 my.database.example.com
kind: Service
apiVersion: v1
metadata:
name: my-service
namespace: prod
spec:
type: ExternalName
externalName: my.database.example.com
当查询主机 my-service.prod.svc.cluster.local 时,群集 DNS 将返回值为
my.database.example.com 的 CNAME 记录。
service 的 FQDN 是: <service_name>.<namespace>.svc.cluster.local
my-service.prod. svc.cluster.local
2、ClusterIP:
通过 k8s 集群内部 IP 暴露服务,选择该值,服务只能够在集群内部访问,这也是默认的ServiceType。
3、NodePort:
通过每个 Node 节点上的 IP 和静态端口暴露 k8s 集群内部的服务。通过请求<NodeIP>:<NodePort>可
以把请求代理到内部的 pod。Client----->NodeIP:NodePort----->Service Ip:ServicePort----
->PodIP:ContainerPort。
4、LoadBalancer:
使用云提供商的负载均衡器,可以向外部暴露服务。外部的负载均衡器可以路由到 NodePort 服务和
ClusterIP 服务。
yaml文件
apiVersion: v1 kind: Service metadata: name: my-nginx labels: run: my-service spec: type: ClusterIP ports: - port: 80 protocol: TCP targetPort: 80 selector: run: my-nginx
#查看 service 详细信息
[root@xksmaster1 02_Service]# kubectl describe svc my-nginx Name: my-nginx Namespace: default Labels: run=my-service Annotations: <none> Selector: run=my-nginx Type: ClusterIP IP Families: <none> IP: 10.255.117.147 IPs: 10.255.117.147 Port: <unset> 80/TCP TargetPort: 80/TCP Endpoints: 172.16.182.40:80,172.16.182.41:80 Session Affinity: None Events: <none>

浙公网安备 33010602011771号