我創建了一個節點并且我正在運行 microk8s。我創建了一個 Pod 和 3 個副本集。我可以訪問 trought 集群 IP。但是我不知道如何通過名稱訪問...請幫助我。我是 Kubenetes 的新手。
- 我創造
microk8s kubectl create deployment httpenv --image bretfisher/httpenv
- 規模
microk8s kubectl scale deployment/httpenv --replicas=3
- 暴露
microk8s kubectl expose deployment/httpenv --port 8888
- 顯示資訊
microk8s kubectl get all
NAME READY STATUS RESTARTS AGE
pod/httpenv-bd844d85f-9xk9l 1/1 Running 0 18m
pod/httpenv-bd844d85f-jf85j 1/1 Running 0 18m
pod/httpenv-bd844d85f-p5kzg 1/1 Running 0 18m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/httpenv ClusterIP 10.152.183.91 <none> 8888/TCP 13m
service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 24h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/httpenv 3/3 3 3 18m
NAME DESIRED CURRENT READY AGE
replicaset.apps/httpenv-bd844d85f 3 3 3 18m
- 嘗試訪問
從節點:
curl -i 10.152.183.91:8888
HTTP/1.1 200 OK
curl -i httpenv:8888
curl: (6) Could not resolve host: httpenv
uj5u.com熱心網友回復:
您可以通過 3 種方式訪問??該服務,我只是在我自己的 microk8s 集群中運行了您的示例。
- 埠將流量從 8888 轉發到任何埠上的本地主機(例如:我已轉發到 8888)。
- 如果您想從集群內部訪問該服務,您可以從集群中運行的任何 pod 訪問該服務(雖然安全問題,可以使用策略等處理)。
- 您可以將服務從型別:ClusterIP 轉換為 NodePort
根據您上面給出的部署,我在本地運行,下面是運行的 pod。在下面的 port-forward 命令中,我們將所有來自 microk8s 集群的 8888 埠的流量路由到您的本地主機 8888。然后您可以使用瀏覽器并導航到 http://localhost:8888,您將在那里看到輸出。
k get po
httpenv-6fdc8554fb-j9q65 1/1 Running 0 14m
httpenv-6fdc8554fb-4fzr8 1/1 Running 0 14m
httpenv-6fdc8554fb-bsxgw 1/1 Running 0 14m
k port-forward httpenv-6fdc8554fb-j9q65 8888:8888 &
curl localhost:8888
Handling connection for 8888
{"HOME":"/root","HOSTNAME":"httpenv-6fdc8554fb-j9q65","KUBERNETES_PORT":"tcp://10.152.183.1:443","KUBERNETES_PORT_443_TCP":"tcp://10.152.183.1:443","KUBERNETES_PORT_443_TCP_ADDR":"10.152.183.1","KUBERNETES_PORT_443_TCP_PORT":"443","KUBERNETES_PORT_443_TCP_PROTO":"tcp","KUBERNETES_SERVICE_HOST":"10.152.183.1","KUBERNETES_SERVICE_PORT":"443","KUBERNETES_SERVICE_PORT_HTTPS":"443","PATH":"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"}%
- 為了訪問 microk8s 集群中的服務,我們將運行一個簡單的 busybox 容器。
k run -i --tty bb7 --image=busybox -- sh
# curl http://httpenv:8888
{"HOME":"/root","HOSTNAME":"httpenv-6fdc8554fb-bsxgw","KUBERNETES_PORT":"tcp://10.152.183.1:443","KUBERNETES_PORT_443_TCP":"tcp://10.152.183.1:443","KUBERNETES_PORT_443_TCP_ADDR":"10.152.183.1","KUBERNETES_PORT_443_TCP_PORT":"443","KUBERNETES_PORT_443_TCP_PROTO":"tcp","KUBERNETES_SERVICE_HOST":"10.152.183.1","KUBERNETES_SERVICE_PORT":"443","KUBERNETES_SERVICE_PORT_HTTPS":"443","PATH":"/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"}#
- 選項3是將服務型別從“ClusterIP”改為“NodePort”,這樣就可以訪問microk8s集群外的服務了。使用 ifconfig 命令獲取您的本地 IP 并卷曲節點埠。
外匯:curl http://local-ip:31223
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2021-11-03T09:55:20Z"
labels:
app: httpenv
name: httpenv
namespace: default
resourceVersion: "2013136"
selfLink: /api/v1/namespaces/default/services/httpenv
uid: 908f4bbd-fef2-4435-b8c4-a80796e03b13
spec:
clusterIP: 10.152.183.170
clusterIPs:
- 10.152.183.170
externalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- nodePort: 31223
port: 8888
protocol: TCP
targetPort: 8888
selector:
app: httpenv
sessionAffinity: None
type: NodePort
k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
httpenv NodePort 10.152.183.170 <none> 8888:31223/TCP 22m
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/348882.html
標籤:Kubernetes 卷曲 核心网
