日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

通过Service访问应用 (2)

發布時間:2023/12/4 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过Service访问应用 (2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄??

  • 通過NodePort Service在外部訪問集群應用?

  • 通過LoadBalancer Service在外部訪問集群應用?

  • Microsoft SQL Server數據庫部署?

為了便于理解和學習,請先閱讀上一篇《通過Service訪問應用 (1)》再繼續學習本篇內容。

通過NodePort Service在外部訪問集群應用

這時候我們就可以使用NodePort類型的Service了。NodePort服務類型允許在每個節點的IP(任意節點IP)上使用靜態端口(NodePort)公開服務,我們可以在集群之外通過請求<NodeIP>:<NodePort>來訪問服務。

YAML定義如下所示:

kind: Service #資源類型 apiVersion: v1 metadata: #標準元數據 name: nodeport-service #服務名稱 spec: #規范定義 type: NodePort #服務類型,這里是節點端口 ports: #端口列表 - port: 80 #當前端口 nodePort: 31001 #節點端口,注意默認的端口范圍為“30000-32767”,注意不要沖突 selector: #標簽選擇器 app:?demo

接下來,我們來執行Service的創建并查詢Service:

kubectl create -f nodePortService.yaml kubectl get services nodeport-service

如上圖所示,我們創建了名為“nodeport-service”的Service,該Service映射“31001”節點端口,并且創建了“11.3.138.104”的集群IP,也就是說,Service可以通過“節點IP:節點端口”或“集群IP(spec.clusterIp):端口”進行訪問。

接下來,在集群外部的計算機,我們通過節點IP和節點端口(172.16.2.201:31001)即可訪問剛剛部署的Demo應用:

雖然我們可以在外部訪問集群中的應用,但是也可以看到該方案有不少不足:

  • 每個端口僅能支持一個服務,不能沖突

  • 端口范圍必須為“30000-32767”,非常不友好

  • 如果節點IP發生變化,服務也將無法訪問

因此,用于開發測試還說得過去,用于生產的話,會影響“升職加薪贏取白富美”!我們得尋求更佳方案。

通過LoadBalancer Service在外部訪問集群應用

LoadBalancer Service是暴露服務到外部(Internet)的標準方式,它可以完美的解決我們上面的問題,不過使用之前,我們得有一個loadBalancerIP——負載均衡IP。一般的云廠商都能夠提供這個服務。這里我們以騰訊云為例進行講解。

首先,我們需要在騰訊云的k8s集群創建一個Demo Deployment,配置參考上文。

接下來,我們需要創建一個負載均衡服務,以便得到負載均衡IP:

有了IP,我們就可以創建LoadBalancer Service了,YAML定義如下所示:

apiVersion: v1 #api版本 kind: Service #Service metadata: #標準元數據 name: demo #名稱 namespace: default #命名空間 spec: #規范 clusterIP: 10.3.255.28 #集群IP loadBalancerIP: 106.52.99.55 #負載均衡IP ports: #端口列表 - name: tcp-80-80 nodePort: 31504 #節點IP port: 80 #Pod端口 protocol: TCP #協議 targetPort: 80 #服務端口 selector: #選擇器 app: demo k8s-app: demo qcloud-app: demo type: LoadBalancer #服務類型,這里為負載均衡服務類型

如上述定義所示,我們進行創建Service。該定義設置了集群IP為“10.3.255.28”,負載均衡IP(loadBalancerIP)為“106.52.99.55”,節點端口為“31504”。Service定義好了,我們對負載均衡服務進行配置,配置一個TCP監聽器如下所示:

接下來,我們就可以盡情訪問了。通過節點IP和端口訪問:

通過負載均衡IP訪問:

通過綁定域名訪問(請設置域名解析為負載均衡IP):

Microsoft SQL Server數據庫部署

為了讓大家更好的使用上述對象進行部署,本節筆者使用大家熟知的Microsoft SQL Server數據庫來進行部署。

  • 部署目標

    完成Linux版本的Microsoft SQL Server 2017的部署

    使用節點目錄“/var/mssql”來存儲數據庫文件

    設置初始密碼為“123456abcD”

    開放1433端口,并且允許外部應用通過節點端口“30338”訪問數據庫

  • YAML定義

接下來,我們需要定義YAML文件。根據部署目標,我們確定可以使用Deployment對象和Service對象來完成本次部署。YAML文件定義如下如下所示:

apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: app: mssql name: mssql #當前Deployment對象名稱,同一個命名空間下必須唯一 spec: replicas: 1 #副本集數量 revisionHistoryLimit: 2 #保留的歷史記錄數,設置為0將清理部署的所有歷史記錄,無法回滾 strategy: type: Recreate template: metadata: labels: app: mssql spec: containers: - env: #環境變量設置 - name: ACCEPT_EULA value: "Y" - name: SA_PASSWORD #sa密碼設置 value: 123456abcD image: mcr.microsoft.com/mssql/server:2017-latest-ubuntu #鏡像 imagePullPolicy: Always name: mssql ports: - containerPort: 1433 #容器端口,SQLServer數據庫默認端口為1433 resources: #資源限制 limits: cpu: "2" memory: 2096Mi requests: cpu: 100m memory: 827Mi volumeMounts: - mountPath: /var/opt/mssql/ name: data-vol restartPolicy: Always terminationGracePeriodSeconds: 30 #Pod結束時等待時長(單位為秒) volumes: - name: data-vol hostPath: #使用主機目錄 path: /var/mssql --- apiVersion: v1 kind: Service metadata: labels: app: mssql name: mssql #服務名稱 spec: ports: - name: tcp-1433-1433 nodePort: 30338 #節點端口,注意默認的端口范圍為“30000-32767”,注意不要沖突 port: 1433 #端口 protocol: TCP targetPort: 1433 #目標端口 selector: #Pod標簽選擇器 app: mssql sessionAffinity: None type: NodePort #服務類型,這里是負載均衡類型
  • 執行部署

接下來,我們使用命令執行部署:

kubectl apply -f mssqlserver.yaml

“kubectl apply”命令既可以創建資源,也可以用于更新資源對象。接下來我們通過命令可以查看部署狀態:

kubectl get svc -o wide -lapp=mssql kubectl get po -o wide -lapp=mssql kubectl get deployment -o wide -lapp=mssql

如上圖所示,部署已經成功,那么接下來我們可以使用管理工具進行連接訪問:

往期內容

Docker+ Kubernetes已成為云計算的主流(二十六)

容器化之后如何節省云端成本?(二十七)

了解Kubernetes主體架構(二十八)

使用Minikube部署本地Kubernetes集群(二十九)

使用kubectl管理k8s集群(三十)

使用Kubeadm創建k8s集群之部署規劃(三十一)

使用Kubeadm創建k8s集群之節點部署(三十二)

集群故障處理之處理思路以及健康狀態檢查(三十三)

集群故障處理之處理思路以及聽診三板斧(三十四)

使用WebDeploy部署遠程IIS網站

使用Kubectl部署應用

通過Service訪問應用 (1)

轉載是一種動力 分享是一種美德

總結

以上是生活随笔為你收集整理的通过Service访问应用 (2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。