zoukankan      html  css  js  c++  java
  • 二进制部署K8S集群(二十)K8s服务暴露之NodePort型Service


    集群外访问:用户-->域名-->负载均衡器-->NodeIP:Port(ServiceIP)-->Pod IP:端口

    1.创建NodePort型Service资源清单

    [root@hdss7-21 ~]# kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:v1.7.9 -n kube-public --replicas=2 
    [root@hdss7-21 ~]# kubectl expose deployment nginx-dp --port=80 -n kube-public
    service/nginx-dp exposed # 默认创建clusterIP,只允许内网访问集群IP
    [root@hdss7-21 ~]# kubectl get all -n kube-public                            NAME                            READY   STATUS    RESTARTS   AGE
    pod/nginx-dp-7f74c75ff9-8vzx8   1/1     Running   0          <invalid>
    pod/nginx-dp-7f74c75ff9-9cwnt   1/1     Running   0          <invalid>
    
    NAME               TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)   AGE
    service/nginx-dp   ClusterIP   192.168.128.131   <none>        80/TCP    41s
    
    NAME                       READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/nginx-dp   2/2     2            2           68s
    
    NAME                                  DESIRED   CURRENT   READY   AGE
    replicaset.apps/nginx-dp-7f74c75ff9   2         2         2       <invalid>
    [root@hdss7-21 ~]# cat > svc.yml  <<'eof' # 创建NodePort型service
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        k8s-app: nginx-dp-svc
      name: nginx-dp-svc
      namespace: kube-public
    spec:
      type: NodePort
      ports:
        - port: 80
          nodePort: 3010
          protocol: TCP
      selector:
        app: nginx-dp
      sessionAffinity: None
    eof
    [root@hdss7-21 ~]# kubectl create -f svc.yml                
    service/nginx-dp created
    [root@hdss7-21 ~]# kubectl get all -n kube-public --show-labels -o wide  
    NAME                            READY   STATUS    RESTARTS   AGE         IP           NODE                NOMINATED NODE   READINESS GATES   LABELS
    pod/nginx-dp-7f74c75ff9-9gx2k   1/1     Running   0          <invalid>   172.7.22.3   hdss7-22.host.com   <none>           <none>            app=nginx-dp,pod-template-hash=7f74c75ff9
    pod/nginx-dp-7f74c75ff9-r9kgx   1/1     Running   0          <invalid>   172.7.21.4   hdss7-21.host.com   <none>           <none>            app=nginx-dp,pod-template-hash=7f74c75ff9
    
    NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)       AGE    SELECTOR       LABELS
    service/nginx-dp       ClusterIP   192.168.96.174   <none>        80/TCP        6m5s   app=nginx-dp   app=nginx-dp
    service/nginx-dp-svc   NodePort    192.168.20.171   <none>        80:3010/TCP   85s    app=nginx-dp   k8s-app=nginx-dp-svc
    
    NAME                       READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS   IMAGES                              SELECTOR       LABELS
    deployment.apps/nginx-dp   2/2     2            2           6m12s   nginx        harbor.od.com/public/nginx:v1.7.9   app=nginx-dp   app=nginx-dp
    
    NAME                                  DESIRED   CURRENT   READY   AGE         CONTAINERS   IMAGES                              SELECTOR                                    LABELS
    replicaset.apps/nginx-dp-7f74c75ff9   2         2         2       <invalid>   nginx        harbor.od.com/public/nginx:v1.7.9   app=nginx-dp,pod-template-hash=7f74c75ff9   app=nginx-dp,pod-template-hash=7f74c75ff9
    

    2.通过edit将ClusterIP改变成NodePort

    kubectl edit svc nginx-dp -n kube-public
    spec:
      clusterIP: 192.168.96.174
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
          selector:
        app: nginx-dp
          sessionAffinity: None
          type: NodePort  #  清加nodeport
    [root@hdss7-21 ~]# kubectl get all -n kube-public 
    NAME                            READY   STATUS    RESTARTS   AGE
    pod/nginx-dp-7f74c75ff9-9gx2k   1/1     Running   0          <invalid>
    pod/nginx-dp-7f74c75ff9-r9kgx   1/1     Running   0          <invalid>
    
    NAME                   TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
    service/nginx-dp       NodePort   192.168.96.174   <none>        80:27051/TCP   15m
    service/nginx-dp-svc   NodePort   192.168.20.171   <none>        80:3010/TCP    11m
    
    NAME                       READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/nginx-dp   2/2     2            2           15m
    
    NAME                                  DESIRED   CURRENT   READY   AGE
    replicaset.apps/nginx-dp-7f74c75ff9   2         2         2       <invalid>
    
  • 相关阅读:
    Redis 设计与实现(第三章) -- 链表adlist
    Redis 设计与实现(第二章) -- SDS
    MySQL索引背后的数据结构及算法原理(转)
    MySQL索引原理及慢查询优化(转)
    MySQL常见的一些面试题(未完待续)
    js 获取前天、昨天、今天、明天、后天的时间
    linux 下nohup 使用
    java split 分割字符串用法
    Python 获取URL访问的HEAD头信息
    MySQL日期数据类型、时间类型使用总结
  • 原文地址:https://www.cnblogs.com/even160941/p/15049421.html
Copyright © 2011-2022 走看看