• K8S使用NodePort类型Service


    1、使用nodetype类型

    1.1、第一种类型创建:直接在yaml中标记是nodePort

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service-nodeport
    spec:
      selector:
          app: nginx
      ports:
        - name: http
          port: 8000
          protocol: TCP
          targetPort: 80
        - name: https
          port: 8443
          protocol: TCP
          targetPort: 443
      type: NodePort
    

    1.1、查询service进行比较

    -1、观察对比可以看见,在暴露的端口后面跟着一个端口
    -2、pod还是上一个步骤创建的pod,并没有发生任何改变

    -3、也就是说pod的访问方式还是可以进行的
     
     

    -4、那么创建的service如果进行访问?
     
     
     
     
     
     
    • service的clusterip可以使用,使用方式serviceClusterIP:port(其他方式都不行),所有的节点都可以通过访问serviceClusterIP:port进行访问服务
    • pod的clusterip进行访问,使用方式podClusterIP:targetport,但是每个节点只能使用自己节点的podClusterIP访问自己的pod
    • node的ip进行访问,使用方式nodeIP:nodePort(如果nodePort没有指定,创建service会自动生成一个)

    1.2、使用错误说明:

    • 如果pod在running,但是服务不能访问,就查看一下service的pod有没有写正确
       
       
       
       

    2、直接暴露端口,不创建service使用nodetype类型

    2.1、创建pod

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
      selector:
          app: nginx
      ports:
        - name: http
          port: 8000
          protocol: TCP
          targetPort: 80
        - name: https
          port: 8443
          protocol: TCP
          targetPort: 443
    

    2.2、直接暴露端口

    kubectl run --port=80(或者kubectl expose --port=80)
    
    kubectl expose deployment nginx-deployment-2 --type=NodePort
    
    • 直接对deployment进行expose,指定暴露类型
       
       
    • 直接expose,会生成一个和deployment一样名称的service
    • 直接expose,不指定暴露的端口,会默认将targetPort(80)暴露到一个随机的端口(22796)上
       
       
       
       
    • 依然可以使用serviceIP:targetPort进行服务访问
       
       
    • 使用方式和修改yaml添加type是完全一样的
    • 如果直接expose指定port,会使用你指定的端口去覆盖你最开始设置的targetPort和port
       
       
    • 以前在进行service创建的时候,port和targetPort可以不一样,但是如果直接expose就会直接修改port和targetPort,可能导致我们的pod不能访问,所以在expose的时候,最好不要添加"port=8081"
    #最好不使用port=8081参数,会修改port和target导致不能访问
    kubectl expose deployment nginx-deployment-2 --type=NodePort --port=8081
    
    • 创建service时,保持targetPort和containerPort一致,最好也和port一样,免得生是非
       
       

    3、使用nodetype类型总结

    1、没有办法在外部网络访问一个IP直接进行pod负载,只能通过nodeIP:nodePort进行同一个Node上pod的负载访问
    2、没有办法访问一个名称映射到服务上面
    3、最好的方式,创建完deployment之后,直接expose生成service,此时你就不用管你到底要暴露什么port和targetport,系统会自动帮你生成,如果此时你感觉nodePort不是你要的,或者clusterIP不是你要的,你直接edit创建的service即可
    4、如果感觉expose有点麻烦,还是想创建service.yaml文件,就直接按照下面模板进行更改即可

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: nginx
      name: nginx-service
      namespace: default
    spec:
      clusterIP: 10.68.232.62(可以手动指定)
      externalTrafficPolicy: Cluster
      ports:
      - name: nginx
        protocol: TCP
        port: 80
        targetPort: 80
        nodePort: 26363(范围:20000-40000)
      selector:
        app: nginx
      type: NodePort
    


    作者:糖纸疯了
    链接:https://www.jianshu.com/p/75af95641c91
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    做成像的你不得不了解的真相9-相机制冷温度越低越好么?
    做成像的你不得不了解的真相8-如影随形的噪声(下)
    做成像的你不得不了解的真相8-如影随形的噪声(中)
    做成像的你不能不了解的真相8-如影随形的噪声(上)
    做成像的你不能不了解的真相7-两分钟测算相机增益(Gain)
    做成像的你不能不了解的真相6-分辨率(2)
    做成像的你不能不了解的真相6-分辨率(1)
    做成像的你不能不了解的真相5-图像信噪比计算
    做成像的你不能不了解的真相4-灰度值与电子数
    做成像的你不能不了解的真相3-信噪比2
  • 原文地址:https://www.cnblogs.com/zhengchunyuan/p/11328092.html
Copyright © 2020-2023  润新知