上一篇文章中,咱們一建立了一個簡單的 K8S 集羣,http://www.javashuo.com/article/p-wvrunaan-ea.html
這裏咱們開始使用 kubectl 命令來建立應用,下面建立的 pod ,service 的 ip 地址範圍是咱們建立 K8S 集羣中時所指定的 (kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap)
pod 地址範圍爲 10.244.0.0/16
service 地址範圍爲 10.96.0.0/12html
# 經過 kuectl run 命令來建立一個 deployment kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --dry-run=true
nginx-deploy 是咱們建立 deployment 的名字 --image : 指定使用的鏡像 --port=80 :容器暴露的端口,該端口只能在 K8S 集羣中訪問 -dry-run=true : 檢測語法是否錯誤,不會正在建立
# 建立 nginx-deploy kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 # 查看 deployment kubectl get deployment
# 查看 pod kubectl get pods 或 kubectl get pods -o wide
這裏咱們能夠使用 K8S 集羣中任意一臺服務器訪問 curl 10.244.2.2 得到 nginx 的內容node
# kubectl delete 刪除 pod kubectl delete pods nginx-deploy-5b595999-zp4b4
當咱們再查看時,發現 pod 刪除後自動再建立了,並且所在的節點也改變了,對應的 pod 的 ip 也改變了
nginx
上面 pod 刪除後從新建立,ip地址會發生改變,爲解決這問題,咱們使用 service服務器
kubectl expose deployment nginx-deploy --name=nginx --port=80 --protocol=TCP # 查看 service kubectl get svc # 取得確認對象的詳細信息 kubectl describe svc nginx
咱們使用集羣中的任何服務器訪問 curl 10.98.120.192 得到 nginx 的內容,即便 pod 刪除後再重建app
刪除 nginx-deploy , nginx kubectl delete deployment nginx-deploy kubectl delete svc nginx
# 從新建立一個 pod kubectl run myapp --image=ikubernetes/myapp:v1 --port=80 # 建立 service kubectl expose deployment myapp --name=myapp --port=80 kubectl get svc
訪問 service myapp
curl
# 執行擴容縮容Pod的操做 kubectl scale --replicas=5 deployment myapp kubectl get pods -o wide
# 經過 kubectl set image 升級鏡像 kubectl set image deployment myapp myapp=ikubernetes/myapp:v2 # 再次訪問 service ip curl 10.110.3.25
# 恢復上一個版本的鏡像 kubectl rollout undo deployment myapp kubectl rollout status deployment myapp # 再次訪問 service ip curl 10.110.3.25
kubectl get pods --show-labels
service 是根據 pod 的標籤來進行管理ide
# 添加 release 標籤,值爲 stable kubectl label pods myapp-6865459dff-445x2 release=stable
kubectl get pods -l release!=stable kubectl get pods -l "release in (stable,beta,alpha)" kubectl get pods -l "release notin (stable,beta,alpha)"
# 獲取節點的標籤 kubectl get nodes --show-labels # 添加節點的標籤 kubectl label nodes node1 disktype=ssd # 刪除節點的標籤 kubectl label nodes node1 disktype-