版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

Pod 访问问题

Pod 被创建之后,该如何访问呢?直接访问 Pod 会有以下几个问题:

  • Pod 的 IP 地址是在 Pod 启动后才被分配,在启动前并不知道 Pod 的 IP 地址。
  • Pod 的 IP 存在变化的可能性,被 Deployment 重建 IP 就会发生变化。
  • 应用服务往往是一组 Pod 组成,逐个访问 Pod 也不现实。

为了以一种固定的方式访问 Pod,Kubernetes 提供了一种负载均衡和服务发现的机制: Service。Service 创建后会提供一个固定的虚拟 IP(以 ClusterIP 类型的 Service 为例), 这样,用户无需关心 Pod 在哪个节点,通过固定 Service IP 即可实现对 Pod 地访问,并且 Service 可以对访问进行负载均衡。

示例:创建一个 Service

代码块
languageyml
apiVersion: v1
kind: Service
metadata:
  name: nginx        # Service的名称
spec:
  selector:          # Label Selector,选择包含app=nginx标签的Pod
    app: nginx
  ports:
  - name: service0
    targetPort: 80   # Pod的端口
    port: 8080       # Service对外暴露的端口
    protocol: TCP    # 转发协议类型,支持TCP和UDP
  type: ClusterIP    # Service的类型