Kubernetes(K8S) 服务

  • Kubernetes 服务

    可以将服务定义为Pod的逻辑集合。可以将其定义为Pod顶部的抽象,它提供了可以访问Pod的单个IP地址和DNS名称。使用Service,可以非常轻松地管理负载平衡配置。它可以帮助吊舱非常轻松地扩展。服务是Kubernetes中的REST对象,其定义可以发布到Kubernetes主服务器上的Kubernetes apiServer上以创建新实例。
  • 无选择器服务

    
    apiVersion: v1
    kind: Service
    metadata:
       name: Jc2182_service
    spec:
       ports:
       - port: 8080
       targetPort: 31999
    
    上面的配置将创建一个名称为Jc2182_service的服务。
  • 带选择器的服务配置文件

    
    apiVersion: v1
    kind: Service
    metadata:
       name: Jc2182_service
    spec:
       selector:
          application: "My Application" -------------------> (Selector)
       ports:
       - port: 8080
       targetPort: 31999
    
    在这个例子中,我们有一个选择器。因此,为了传输流量,我们需要手动创建一个端点。
    
    apiVersion: v1
    kind: Endpoints
    metadata:
       name: Jc2182_service
    subnets:
       address:
          "ip": "192.168.168.40" -------------------> (Selector)
       ports:
          - port: 8080
    
    在上面的代码中,我们创建了一个端点,该端点会将流量路由到定义为“ 192.168.168.40:8080”的端点。
  • 多端口服务创建

    
    apiVersion: v1
    kind: Service
    metadata:
       name: Jc2182_service
    spec:
       selector:
          application: “My Application” -------------------> (Selector)
       ClusterIP: 10.3.0.12
       ports:
          -name: http
          protocol: TCP
          port: 80
          targetPort: 31999
       -name:https
          Protocol: TCP
          Port: 443
          targetPort: 31998
    
  • 服务种类

    ClusterIP-这有助于限制群集中的服务。它在已定义的Kubernetes集群中公开服务。
    
    spec:
       type: NodePort
       ports:
       - port: 8080
          nodePort: 31999
          name: NodeportService
    
    NodePort-它将在已部署节点的静态端口上公开服务。NodePort服务将路由到的ClusterIP服务将自动创建。可以使用 NodeIP:nodePort 从群集外部访问该服务。
    
    spec:
       ports:
       - port: 8080
          nodePort: 31999
          name: NodeportService
          clusterIP: 10.20.30.40
    
    负载均衡器-它使用云提供商的负载均衡器。NodePort和ClusterIP服务是自动创建的,外部负载均衡器将路由到该服务。
    完整服务yaml文件,服务类型为“节点端口”。尝试自己创造一个。
    
    apiVersion: v1
    kind: Service
    metadata:
       name: appname
       labels:
          k8s-app: appname
    spec:
       type: NodePort
       ports:
       - port: 8080
          nodePort: 31999
          name: omninginx
       selector:
          k8s-app: appname
          component: nginx
          env: env_name