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>

 

posted @ 2023-03-09 16:03  しみずよしだ  阅读(45)  评论(0)    收藏  举报