W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
本文展示如何創(chuàng)建一個(gè) Kubernetes 服務(wù)對(duì)象,能讓外部客戶(hù)端訪問(wèn)在集群中運(yùn)行的應(yīng)用。 該服務(wù)為一個(gè)應(yīng)用的兩個(gè)運(yùn)行實(shí)例提供負(fù)載均衡。
你必須擁有一個(gè) Kubernetes 的集群,同時(shí)你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個(gè)節(jié)點(diǎn)的集群上運(yùn)行本教程,且這些節(jié)點(diǎn)不作為控制平面主機(jī)。 如果你還沒(méi)有集群,你可以通過(guò) Minikube 構(gòu)建一個(gè)你自己的集群,或者你可以使用下面任意一個(gè) Kubernetes 工具構(gòu)建:
要獲知版本信息,請(qǐng)輸入 ?kubectl version
?。
這是應(yīng)用程序部署的配置文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
selector:
matchLabels:
run: load-balancer-example
replicas: 2
template:
metadata:
labels:
run: load-balancer-example
spec:
containers:
- name: hello-world
image: gcr.io/google-samples/node-hello:1.0
ports:
- containerPort: 8080
protocol: TCP
kubectl apply -f https://k8s.io/examples/service/access/hello-application.yaml
上面的命令創(chuàng)建一個(gè) Deployment 對(duì)象 和一個(gè)關(guān)聯(lián)的 ReplicaSet 對(duì)象。 這個(gè) ReplicaSet 有兩個(gè) Pod, 每個(gè) Pod 都運(yùn)行著 Hello World 應(yīng)用。
kubectl get deployments hello-world
kubectl describe deployments hello-world
kubectl get replicasets
kubectl describe replicasets
kubectl expose deployment hello-world --type=NodePort --name=example-service
kubectl describe services example-service
輸出類(lèi)似于:
Name: example-service
Namespace: default
Labels: run=load-balancer-example
Annotations: <none>
Selector: run=load-balancer-example
Type: NodePort
IP: 10.32.0.16
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 31496/TCP
Endpoints: 10.200.1.4:8080,10.200.2.5:8080
Session Affinity: None
Events: <none>
注意服務(wù)中的 NodePort 值。例如在上面的輸出中,NodePort 是 31496。
kubectl get pods --selector="run=load-balancer-example" --output=wide
輸出類(lèi)似于:
NAME READY STATUS ... IP NODE
hello-world-2895499144-bsbk5 1/1 Running ... 10.200.1.4 worker1
hello-world-2895499144-m1pwt 1/1 Running ... 10.200.2.5 worker2
kubectl cluster-info
? 來(lái)查看節(jié)點(diǎn)地址。 如果你使用的是 Google Compute Engine 實(shí)例,則可以使用 ?gcloud compute instances list
? 命令查看節(jié)點(diǎn)的公共地址。curl http://<public-node-ip>:<node-port>
這里的 ?<public-node-ip>
? 是你節(jié)點(diǎn)的公共 IP 地址,?<node-port>
? 是你服務(wù)的 NodePort 值。 對(duì)于請(qǐng)求成功的響應(yīng)是一個(gè) hello 消息:
Hello Kubernetes!
作為 ?kubectl expose
? 的替代方法,你可以使用 服務(wù)配置文件 來(lái)創(chuàng)建服務(wù)。
想要?jiǎng)h除服務(wù),輸入以下命令:
kubectl delete services example-service
想要?jiǎng)h除運(yùn)行 Hello World 應(yīng)用的 Deployment、ReplicaSet 和 Pod,輸入以下命令:
kubectl delete deployment hello-world
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: