<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # 1、Cluster IP 當創建K8s Service時,Cluster IP是默認的方式。這種Service分配了一個內部的IP,使其他組件可以訪問到pod。 使用一個獨立的IP地址,它可以使service負載均衡到多個pod。 service通過命令部署: ``` kubectl apply -f clusterip.yaml ``` 這個定義文件可以查看: ``` cat clusterip.yaml ``` ``` cat clusterip.yaml apiVersion: v1 kind: Service metadata: name: webapp1-clusterip-svc labels: app: webapp1-clusterip spec: ports: - port: 80 selector: app: webapp1-clusterip --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: webapp1-clusterip-deployment spec: replicas: 2 template: metadata: labels: app: webapp1-clusterip spec: containers: - name: webapp1-clusterip-pod image: katacoda/docker-http-server:latest ports: - containerPort: 80 --- ``` 這將會部署一個兩個副本的web app,使用service負載均衡。pod可以使用命令查看: ``` kubectl get pods ``` 同時部署了一個service: ``` kubectl get svc ``` 更多service配置和活動的端點(Pods)的詳細信息查看: ``` kubectl describe svc/webapp1-clusterip-svc ``` 部署完,可以通過分配的ClusterIp進行訪問: ``` export CLUSTER_IP=$(kubectl get services/webapp1-clusterip-svc -o go-template='{{(index .spec.clusterIP)}}') echo CLUSTER_IP=$CLUSTER_IP curl $CLUSTER_IP:80 ``` 多個請求將會展示service如何在基于共同的標簽選擇器在多個pods之間負載均衡。 ``` curl $CLUSTER_IP:80 ``` # 2、Target Port Target Port允許我們將服務可用的端口與應用程序偵聽的端口分離。TargetPort是應用程序配置要監聽的端口。Port是應用程序從外部訪問的端口。 查看clusterip-target.yaml ``` cat clusterip-target.yaml apiVersion: v1 kind: Service metadata: name: webapp1-clusterip-targetport-svc labels: app: webapp1-clusterip-targetport spec: ports: - port: 8080 targetPort: 80 selector: app: webapp1-clusterip-targetport --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: webapp1-clusterip-targetport-deployment spec: replicas: 2 template: metadata: labels: app: webapp1-clusterip-targetport spec: containers: - name: webapp1-clusterip-targetport-pod image: katacoda/docker-http-server:latest ports: - containerPort: 80 --- ``` 像先前一樣,service和另外的pod通過命令部署: ``` kubectl apply -f clusterip-target.yaml ``` 查看service ``` kubectl get svc ``` ``` kubectl describe svc/webapp-clusterip-targetport-svc ``` 當service和pod都被部署了,可以像先前一樣通過cluster IP訪問,但是這次定義的port是8080。 ``` export CLUSTER_IP=$(kubectl get services/webapp1-clusterip-targetport-svc -o go-template='{{(index .spec.clusterIP)}}') echo CLUSTER_IP=$CLUSTER_IP curl $CLUSTER_IP:8080 ``` 應用程序本身仍然配置的是監聽80端口。Kubernetes服務管理兩者之間的轉換。 # 3、NodePort TargetPort和ClusterIP是在集群內是可用的,然而Nodeport通過定義一個靜態的端口在每個節點IP上暴露服務。不管集群內的哪個節點是可以訪問的,service在定義的端口上就是可以訪問的。 注:此時ClusterIP依然可用。 ``` kubectl apply -f nodeport.yaml ``` 當查看service定義時,注意添加的類型和NodePort屬性的定義。 ``` cat nodeport.yaml apiVersion: v1 kind: Service metadata: name: webapp1-nodeport-svc labels: app: webapp1-nodeport spec: type: NodePort ports: - port: 80 nodePort: 30080 selector: app: webapp1-nodeport --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: webapp1-nodeport-deployment spec: replicas: 2 template: metadata: labels: app: webapp1-nodeport spec: containers: - name: webapp1-nodeport-pod image: katacoda/docker-http-server:latest ports: - containerPort: 80 --- ``` ``` kubectl get svc ``` ``` kubectl describe svc/webapp1-nodeport-svc ``` 這個service現在可以通過定義的NodePort的節點IP地址訪問。 ``` curl 172.17.0.34:30080 ``` # 4、External IPs 另一種在集群外訪問service的方式時通過External IP地址。 更新定義文件的當前集群IP地址: ``` sed -i 's/HOSTIP/172.17.0.34/g' externalip.yaml ``` 查看externalip.yaml ``` cat externalip.yaml apiVersion: v1 kind: Service metadata: name: webapp1-externalip-svc labels: app: webapp1-externalip spec: ports: - port: 80 externalIPs: - 172.17.0.34 selector: app: webapp1-externalip --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: webapp1-externalip-deployment spec: replicas: 2 template: metadata: labels: app: webapp1-externalip spec: containers: - name: webapp1-externalip-pod image: katacoda/docker-http-server:latest ports: - containerPort: 80 --- ``` ``` kubectl apply -f externalip.yaml ``` ``` kubectl get svc ``` ``` kubectl describe svc/webapp1-externalip-svc ``` 這個服務綁定到主節點的IP地址的80端口。 ``` curl 172.17.0.34 ``` # 5、Load Balancer 當在云上運行時,如EC2或Azure,可以配置和分配通過云提供商發布的公共IP地址。將會通過一個負載均衡器分發,如ELB(彈性負載均衡)。這允許將額外的公共IP地址分配給Kubernetes集群,而無需直接與云提供商交互。 雖然Katacoda不是云提供商,它仍然可以動態地為LoadBalancer類型的服務分配IP地址。部署云提供商使用: ``` kubectl appky -f cloudprovider.yaml ``` 當在云提供商部署一個service,這是不必要的。 當一個service請求一個Load Balancer時,這個提供商將會從定義好的配置10.10.0.0/26范圍內分配一個。 ``` kubectl get pods -n kube-system ``` ``` kubectl apply -f loadbalancer.yaml ``` 這個service通過一個Load Balancer定義,查看: ``` cat loadbalancer.yaml apiVersion: v1 kind: Service metadata: name: webapp1-loadbalancer-svc labels: app: webapp1-loadbalancer spec: type: LoadBalancer ports: - port: 80 selector: app: webapp1-loadbalancer --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: webapp1-loadbalancer-deployment spec: replicas: 2 template: metadata: labels: app: webapp1-loadbalancer spec: containers: - name: webapp1-loadbalancer-pod image: katacoda/docker-http-server:latest ports: - containerPort: 80 --- ``` 當IP地址正在被分配,service將會Pending。當分配完,將會出現在service列表中。 ``` kubectl get svc ``` ``` kubectl describe svc/webapp1-loadbalancer-svc ``` 這個service可以通過分配的IP地址訪問,這個例子中來自10.10.0.0范圍。 ``` export LoadBalancerIP=$(kubectl get services/webapp1-loadbalancer-svc -o go-template='{{(index .status.loadBalancer.ingress 0).ip}}') echo LoadBalancerIP=$LoadBalancerIP curl $LoadBalancerIP ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看