面试题整理9----谈谈对k8s的理解2-1. Service 资源

1.1 Service

Service 是软件服务(例如 mysql)的命名抽象,包含代理要侦听的本地端口(例如 3306)和一个选择算符,选择算符用来确定哪些 Pod 将响应通过代理发送的请求。

Service几种模式:

  • ClusterIP

适用于集群内部的服务间通信。

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  • NodePort

适用于需要从集群外部通过node节点的映射访问服务的场景。

api版version: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  type: NodePort
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30007
  • LoadBalancer

适用于需要从互联网访问服务的场景。

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  • Ingress

适用于需要基于路径或主机名路由流量的场景。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
    - host: my-app.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80
  • ExternalName

将 Service 映射到一个外部名称,通常是一个 DNS 名称。适用于需要将 Kubernetes 服务与外部服务集成的场景。

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: ExternalName
  externalName: my-external-service.com

1.2 Endpoints

Endpoints 是实现实际服务的端点的集合。即是通过service发现的后端pods的集合.

1.3 Ingress

Ingress 是允许入站连接到达后端定义的端点的规则集合。

1.4 EndpointSlice

EndpointSlice 是实现某 Service 的端点的子集.

1.5 IngressClass

IngressClass 代表 Ingress 的类,被 Ingress 的规约引用

上一篇:Kubernetes(k8s)安装详细过程


下一篇:Ubuntu搭建ES8集群+加密通讯+https访问