菜鳥系列k8s——k8s快速入門(1)


k8s快速入門

1.快速創建k8s集群

參考網站:https://kubernetes.io/docs/tutorials/kubernetes-basics

點擊教程菜單 1. Create a Cluster -> Interactive Tutorial - Creating a Cluster

note:通過 Kubernetes 的命令行工具 kubectl 遠程管理集群
  • minikube start 創建集群
  • kubectl cluster-info 查看集群信息
Kubernetes master is running at https://172.17.0.15:8443
KubeDNS is running at https://172.17.0.15:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
  • kubectl get nodes 查看節點信息
NAME       STATUS   ROLES    AGE     VERSION
minikube   Ready    master   2m53s   v1.13.3

2.部署應用

kubectl run kubernetes-bootcamp  --image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080

顯示信息
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/kubernetes-bootcamp created

這里我們通過 kubectl run 部署了一個應用,命名為 kubernetes-bootcamp
--image 指定Docker 鏡像
--port 設置應用對外服務的端口

3.訪問應用

默認情況下,所有 Pod只能在集群內部訪問。為了能夠從外部訪問應用,我們需要將容器的 8080 端口映射到節點的端口。

kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080

顯示信息
service/kubernetes-bootcamp exposed

查看services及對應的映射端口

kubectl get services

NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes            ClusterIP   10.96.0.1        <none>        443/TCP          9m47s
kubernetes-bootcamp   NodePort    10.105.140.245   <none>        8080:31048/TCP   82s

kubernetes 是默認的 service,暫時不用考慮。kubernetes-bootcamp 是我們應用的 service,8080 端口已經映射到 host01 的 31048 端口,端口號是隨機分配的

通過curl命令進行訪問

curl host01:30393
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6c5cfd894b-ccqz7 | v=1

4.Scale 應用

默認情況下應用只會運行一個副本,可以通過 kubectl get deployments查看副本數。

kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   1/1     1            1           2m

增加副本個數

kubectl scale deployments/kubernetes-bootcamp --replicas=3
deployment.extensions/kubernetes-bootcamp scaled

$ kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   3/3     3            3           2m34s

減少副本個數

$ kubectl scale deployments/kubernetes-bootcamp --replicas=1
deployment.extensions/kubernetes-bootcamp scaled
$ kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   1/1     1            1           3m51s

$ kubectl get pods
NAME                                   READY   STATUS    RESTARTS   AGE
kubernetes-bootcamp-6c5cfd894b-9cn54   1/1     Running   0          41s
kubernetes-bootcamp-6c5cfd894b-ccqz7   1/1     Running   0          4m44s
kubernetes-bootcamp-6c5cfd894b-gnhgz   1/1     Running   0          41s
$ kubectl scale deployments/kubernetes-bootcamp --replicas=1
deployment.extensions/kubernetes-bootcamp scaled
$ kubectl get pods
NAME                                   READY   STATUS        RESTARTS   AGE
kubernetes-bootcamp-6c5cfd894b-9cn54   1/1     Terminating   0          57s
kubernetes-bootcamp-6c5cfd894b-ccqz7   1/1     Running       0          5m
kubernetes-bootcamp-6c5cfd894b-gnhgz   1/1     Terminating   0          57s

4.滾動更新

當前應用使用的 image 版本為 v1,執行如下命令將其升級到 v2:

$ kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
deployment.extensions/kubernetes-bootcamp image updated
$ kubectl get pods
NAME                                   READY   STATUS        RESTARTS   AGE
kubernetes-bootcamp-5bf4d5689b-4k5lb   1/1     Running       0          3s
kubernetes-bootcamp-5bf4d5689b-b9szr   1/1     Running       0          4s
kubernetes-bootcamp-5bf4d5689b-sxxs5   1/1     Running       0          4s
kubernetes-bootcamp-5bf4d5689b-zftkx   1/1     Running       0          3s
kubernetes-bootcamp-6c5cfd894b-ccqz7   1/1     Terminating   0          6m25s
kubernetes-bootcamp-6c5cfd894b-r4mtd   1/1     Terminating   0          6s
kubernetes-bootcamp-6c5cfd894b-r6txw   1/1     Terminating   0          6s
kubernetes-bootcamp-6c5cfd894b-vnbd6   1/1     Terminating   0          6s

$ curl host01:30393
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-5bf4d5689b-zftkx | v=2

通過 kubectl get pods 可以觀察滾動更新的過程:v1 的 Pod 被逐個刪除,同時啟動了新的 v2 Pod。更新完成后訪問新版本應用。

如果要回退到 v1 版本也很容易,執行 kubectl rollout undo 命令:

$ kubectl rollout undo deployments/kubernetes-bootcamp
deployment.extensions/kubernetes-bootcamp rolled back
$ curl host01:30393
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6c5cfd894b-pq7kv | v=1
有興趣的關注IT程序員客棧哦


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM