# 1、啟動集群
開始我們需要啟動一個K8s集群。下面的命令啟動集群組件并且下載Kubectl CLI。
```
minikube start --wait=false
```
等待節點變成Ready狀態,通過命令檢查:
```
kubectl get nodes
```
# 2、kubectl Run
run命令根據指定的參數,如鏡像或者副本數,創建一個部署(deployment)。這個部署被發送到Kubernetes主服務器,由它啟動所需的Pods和容器。kubectl run 類似于 docker run,但是集群層次的。
這個命令的格式是 kubectl run [部署名稱] \[屬性\]
## Task
下面的命令會啟動一個叫http的部署。它將會依據docker鏡像katacode/docker-http-server:lastest啟動一個容器。
```
kubectl run http --image=katacoda/docker-http-server:latest --replicas=1
```
然后你可以使用kubectl來查看部署的狀態:
```
kubectl get deployments
```
要了解K8s做了什么,可以describe這個部署過程。
```
kubectl describe deployment http
```
這個描述包含了有多少個副本是可用的,指定的標簽以及部署相關的事件。這些事件將突出顯示可能發生的任何問題和錯誤。
在下一步我們將會暴露運行中的服務(service)。
# 3、Kubectl Expose
當部署被創建了,我們可以使用kubectl來創建一個服務來暴露pods的特定端口。
暴露最近部署的http部署通過kubectl expose。這個命令允許你定義service的不同參數并且怎么暴露部署。
Task
使用下面的命令暴露容器的80端口在宿主機上8000,綁定到宿主機的外部ip。
```
kubectl expose deployment http --external-ip="172.17.0.83" --port=8000 --target-port=80
```
然后你可以ping這個宿主機,并且看到來自HTTP service的結果。
```
curl http://172.17.0.83:8000
```
# 4、Kubectl Run and Expose
kubectl run 可以使用一個單一的命令創建一個部署并且暴露它。
## Task
使用命令創建第二個http service暴露在8001端口。
```
kubectl run httpexposed --image=katacoda/docker-http-server:latest --replicas=1 --port=80 --hostport=8001
```
你可以訪問它,使用地址:
```
curl http://172.17.0.83:8001
```
在背后,這通過Docker Port映射暴露了Pod。結果你不會看到services列出。
```
kubectl get svc
```
查看詳細你可以使用
```
docker ps | grep httpexposed
```
## Pause容器
運行上面的命令你會看到暴露的是Pod的端口,而不是http容器自己的。Pause容器是負責定義Pod的網絡。Pod中的其他的容器共享相同的網絡命名空間。這提高了網絡性能,并允許多個容器通過同一個網絡接口進行通信。
# 5、伸縮容器
當我們部署運行時,我們可以使用kubectl來伸縮副本的數量。
伸縮部署將會請求K8s來啟動額外的Pods。這些Pods將會使用暴露的service自動的負載均衡。
## Task
kubectl sacle命令允許我們針對特定的部署或者復制控制器調整Pod運行的數量。
```
kubectl scale --replicas=3 deployment http
```
列出所有的pod,你應該能看到http部署有3個運行中的pod。
一旦pod啟動,它將會被添加到負載均衡服務中。通過describe service你可以看到端點和包含的相關Pod。
```
kubectl describe svc http
```
請求service將會請求不同的node處理這個請求。
```
curl http://172.17.0.83:8000
```
- 前言
- 安裝minikube
- 啟動一個單節點的Kubernetes集群
- 啟動一個多節點的集群使用kubeadm
- 使用kubectl部署容器
- 使用YAML部署容器
- 在K8s上部署Guestbook(留言簿)示例
- K8s網絡介紹
- 創建Ingress路由
- Liveness(存活探針)、Readiness(就緒探針)和健康檢查
- 使用CRI-O和kubeadm開始
- 在K8s上運行一個有狀態服務
- 管理K8s中的秘鑰和密碼
- 使用Kompose部署Docker Compose文件
- 在Kubernates上從源代碼部署一個服務
- 使用Heptio Velero備份和恢復
- Helm包管理器
- 基本的K8s的可觀察性(監控)
- 使用EFK記錄日志
- 在K8s上安裝Weave Scope