Kubernetes官網(wǎng)為我們準(zhǔn)備了最小可用系統(tǒng),我們可以借此來快速了解Kubernetes。
訪問地址如下:
https://kubernetes.io/docs/tutorials/kubernetes-basics/
界面展示:
教程菜單位于界面的左端纠俭,Terminal位于界面的右側(cè)市怎,我們可以在此處體驗(yàn)Kubernetes的集群創(chuàng)建、應(yīng)用部署、訪問應(yīng)用隐岛、擴(kuò)展應(yīng)用、更新應(yīng)用等最常見的使用場(chǎng)景瓷翻,
便于我們快速建立對(duì)Kubernetes的感性認(rèn)識(shí)聚凹。
下面開始我們Kubernetes的快速體驗(yàn):
1、創(chuàng)建一個(gè)單節(jié)點(diǎn)Kubernetes集群
執(zhí)行 minikube start齐帚,這樣一個(gè)單節(jié)點(diǎn)的Kubernetes集群就創(chuàng)建成功了妒牙,我們可以執(zhí)行kubectl get nodes命令來查看集群節(jié)點(diǎn)。
這里需要注意的一點(diǎn)是我們執(zhí)行的這些命令并不是在對(duì)應(yīng)的節(jié)點(diǎn)中对妄,而是通過Kubernetes命令行工具kubectl來遠(yuǎn)程管理集群湘今。
查看集群信息,執(zhí)行 kubectl cluster-info
2剪菱、部署應(yīng)用
首先介紹一個(gè)術(shù)語Pod:Pod是容器的集合象浑,通常會(huì)將緊密相關(guān)的一組容器放到一個(gè)Pod中,同一個(gè)Pod中的所有容器共享IP地址和Port空間琅豆,
也就是說它們?cè)谝粋€(gè)network namespace中愉豺。Pod是Kubernetes調(diào)度的最小單位,同一Pod中的容器始終被一起調(diào)度茫因。
下面正式開始應(yīng)用部署蚪拦,執(zhí)行 kubectl run kubernetes-bootcamp \--image=docker.io/jocatalin/kubernetes-bootcamp:v1 \--port=8080,
我們通過kubectl run部署一個(gè)應(yīng)用冻押,應(yīng)用名為:kubernetes-bootcamp驰贷,Docker鏡像通過 --image 指定。--port設(shè)置應(yīng)用對(duì)外服務(wù)的端口洛巢。
查看Pod:
執(zhí)行 kubectl get pods括袒,查看當(dāng)前的Pod
3、訪問應(yīng)用
默認(rèn)情況下稿茉,所有Pod只能在集群內(nèi)部訪問锹锰。如上面的POD,如果我們想要訪問該應(yīng)用就只能直接訪問容器的8080端口漓库。
為了能夠從外部訪問應(yīng)用恃慧,我們需要將容器的8080端口映射到節(jié)點(diǎn)的端口。
執(zhí)行:kubectl expose deployment/kubernetes-bootcamp \--type="NodePort" \--port 8080
執(zhí)行 kubectl get services渺蒿,可以查看應(yīng)用被映射到節(jié)點(diǎn)的哪個(gè)端口痢士。
kubernetes-bootcamp是我們應(yīng)用的service,8080端口已經(jīng)映射到節(jié)點(diǎn)的30335端口茂装,注意端口號(hào)是隨機(jī)分配的怠蹂。
可以執(zhí)行命令:curl miniube:30335 訪問應(yīng)用
4善延、Scale應(yīng)用
默認(rèn)情況下應(yīng)用只會(huì)運(yùn)行一個(gè)副本,我們可以通過 kubectl getdeployments 命令查看副本數(shù)城侧。
如果我們想要增加副本數(shù)量可以執(zhí)行命令 kubectl scale deployments/kubernetes-bootcamp --replicas=3
通過curl訪問應(yīng)用易遣,可以看到每次請(qǐng)求發(fā)送到不同的Pod,3個(gè)副本輪詢處理赞庶,這樣就實(shí)現(xiàn)了負(fù)載均衡。
若想減少副本數(shù)量澳骤,可以執(zhí)行 kubectl scale deployments/kubernetes-bootcamp --replicas=2歧强,如圖可以看到,其中一個(gè)副本被刪除了为肮。
5摊册、滾動(dòng)更新
當(dāng)前應(yīng)用使用的image版本為v1,可以執(zhí)行命令 kubectl set image deployments/kubernetes-bootcampkubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
將其升級(jí)到 v2颊艳。通過kubectl get pods可以觀察滾動(dòng)更新的過程:v1的Pod被逐個(gè)刪除茅特,同時(shí)啟動(dòng)了新的v2 Pod。更新完成后可以訪問新版本應(yīng)用棋枕。
版本回退可以執(zhí)行 kubectl rollout undo 白修。
參考書籍:《每天5分鐘玩轉(zhuǎn)Kubernetes》