• Kubernetes service 使用定义


    Kubernetes service 使用定义

    介绍说明

    • 防止Pod失联
    • 定义一组Pod的访问策略
    • 支持ClusterIP,NodePort以及LoadBalancer三种类型
    • Service的底层实现主要有Iptables和IPVS二种网络模式

    Pod与Service的关系

    • 通过label-selector相关联
    • 通过Service实现Pod的负载均衡( TCP/UDP 4层)

    Service 定义

    # 版本
    apiVersion: v1
    # 资源对象
    kind: Service
    # 元数据
    metadata:
      # 指定service名称
      name: my-service
      # 命名空间
      namespace: default
    spec:
      # 分配IP
      clusterIP: 10.0.0.1
      # 指定端口
      ports:
      # 端口名称
      - name: http
        # 指定service端口
        port: 80
        # service使用协议
        protocol: TCP
        # 容器端口,转发后端容器端口
        targetPort: 80
      # 标签选择器,通过标签匹配关联的pod
      selector:
        # 标签
        app: nginx

    实例

    1、创建service yml文件

    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
      namespace: default
    spec:
      clusterIP: 10.0.0.123
      ports:
      - name: http
        port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
    vim service.yaml

    2、创建service

    kubectl apply -f service.yaml

    3、查看创建的service

    NAME             TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
    my-service       ClusterIP   10.0.0.123   <none>        80/TCP         36s
    kubectl get service

    4、动态感知查看分配到的Node

    NAME             ENDPOINTS                                   AGE
    kubernetes       192.168.1.108:6443,192.168.1.109:6443       2d16h
    my-service       <none>                                      2m54s
    nginx-service    172.17.1.2:80,172.17.1.3:80,172.17.1.6:80   44h
    nginx-service2   <none>                                      17h
    kubectl get endpoints

    注:每个service对应一个ENDPOINTS控制器,service则用来关联pod。

    5、查看ENDPOINTS详细信息

    Name:              my-service
    Namespace:         default
    Labels:            <none>
    Annotations:       kubectl.kubernetes.io/last-applied-configuration:
                         {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"my-service","namespace":"default"},"spec":{"clusterIP":"10.0.0.12...
    Selector:          app=nginx
    Type:              ClusterIP
    IP:                10.0.0.123
    Port:              http  80/TCP
    TargetPort:        80/TCP
    Endpoints:         <none>
    Session Affinity:  None
    Events:            <none>
    kubectl describe service my-service
  • 相关阅读:
    生成大小字母以及数字混乱的6位验证码
    重写吃货联盟
    集合练习:登录注册功能
    出现并解决Navicat 报错:1130-host ... is not allowed to connect to this MySql server,MySQL
    mysql在linux的安装
    Spring4分别整合mongo2.X和3.0
    oracle数据库使用plsql(64位)时出现的问题
    spring的CXF远程服务
    spring的定时任务或者说自动任务
    jquery节点查询
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/11413876.html
Copyright © 2020-2023  润新知