我正在k3d Kubernetes 集群上本地部署這個專案 ( GitHub )。它包括一個 Helm 圖表。此示例還有一個檔案,可在此處找到。
到目前為止我所做的是下面的內容。它作業得很好。問題是它提供的 ClusterIP 是 k8s 內部的,我無法在集群外部訪問它們。我想要的是能夠在我機器的瀏覽器上運行它們。有人告訴我,我需要一個節點埠或負載均衡器來做到這一點。我怎樣才能做到這一點?
// Build Docker Images
// Navigate to root directory -> ./ProtoClusterTutorial
docker build . -t proto-cluster-tutorial:1.0.0
// Navigate to root directory
docker build -f ./SmartBulbSimulatorApp/Dockerfile . -t smart-bulb-simulator:1.0.0
// Push Docker Image to Docker Hub
docker tag proto-cluster-tutorial:1.0.0 hulkstance/proto-cluster-tutorial:1.0.0
docker push hulkstance/proto-cluster-tutorial:1.0.0
docker tag smart-bulb-simulator:1.0.0 hulkstance/smart-bulb-simulator:1.0.0
docker push hulkstance/smart-bulb-simulator:1.0.0
// List Docker Images
docker images
// Deployment to Kubernetes cluster
helm install proto-cluster-tutorial chart-tutorial
helm install simulator chart-tutorial --values .\simulator-values.yaml
// It might fail with the following message:
// Error: INSTALLATION FAILED: Kubernetes cluster unreachable: Get "https://host.docker.internal:64285/version": dial tcp 172.16.1.131:64285: connectex: No connection could be made because the target machine actively refused it.
// which means we don't have a running Kubernetes cluster. We need to create one:
k3d cluster create two-node-cluster --agents 2
// If we want to switch between clusters:
kubectl config use-context k3d-two-node-cluster
// Confirm everything is okay
kubectl get pods
kubectl logs proto-cluster-tutorial-78b5db564c-jrz26
uj5u.com熱心網友回復:
你可以使用kubectl port-forward命令。
句法:
kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT
在你的情況下:
kubectl port-forward pod/proto-cluster-tutorial-78b5db564c-jrz26 8181:PORT_OF_POD
現在,您可以訪問localhost:8181使用。
uj5u.com熱心網友回復:
我建議您遵循公開服務的官方檔案。k3d
使用其中一個ingress或nodeport方法。
uj5u.com熱心網友回復:
這完全取決于您的用例。如果您在本地機器上進行測驗,您可能需要使用 portfowrd 命令kubectl port-forward <pod-name> <localport>:<remoteport>
如果您使用的是 Minikube,請使用minikube service <service-name> --url
如果您使用的是 AKS、GKE 或 EKS 等云提供商,那么您可能需要考慮使用其他方式訪問應用程式,這可以通過使用 NodePort、LoadBalancer 或 Ingress 來完成。
如果你使用Nodeport相同的服務型別可以實作。但是在 Nodeport 服務的情況下,它支持的所有埠范圍是30000-32767,這是一個很難記住埠號的數字。Nodeport 服務的另一個缺點是節點的 IP 地址(因為它會在節點重新啟動時更改)因此這不用于專案目的。
創建 NodePort 服務:節點埠服務
LoadBalancer服務公開一個外部 IP,然后您可以使用 : 訪問該服務,但如果您有 100 個服務,您將需要為 100 個外部 IP 付費,這會妨礙預算。
在 Kubernetes 上創建負載均衡器服務:負載均衡器服務
公開應用程式的另一種方法是使用ingress-controller來實作相同的目的。使用入口,您可以使用一個外部 IP 公開 100 個應用程式。您需要安裝入口控制器,然后使用入口檔案來配置規則。
在 Kubernetes 上設定入口控制器:入口控制器
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/506686.html
