K8s(2)-部署應用


 

     一旦運行了Kubernetes集群,就可以在其上部署容器化應用程序。為此,您需要創建Kubernetes Deployment配置。Deployment指示Kubernetes如何創建和更新應用程序的實例。創建Deployment后,Kubernetes調度組件將應用程序實例提到集群中的各個節點上。

創建應用程序實例后,Kubernetes Deployment Controller會持續監視這些實例。如果托管實例的節點關閉或被刪除,則Deployment控制器會替換它。這提供了一種自我修復機制來解決機器故障或維護問題。

 

 

1. 檢查kubectl配置是否正常
[root@master ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.2", GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def", GitTreeState:"clean", BuildDate:"2019-01-10T23:35:51Z", GoVersion:"go1.11.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.2", GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def", GitTreeState:"clean", BuildDate:"2019-01-10T23:28:14Z", GoVersion:"go1.11.4", Compiler:"gc", Platform:"linux/amd64"}

  

2. 查看集群中工作節點

    這里只有一個控制節點作為工作節點,注意要去掉控制節點的污點。

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE    VERSION
master   Ready    master   2d8h   v1.13.2

  

3. 部署應用

  通過創建一個部署(deployment),部署一個應用

[root@master ~]# kubectl run kubernetes-bootcamp --image=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
  •   部署的名字: kubernetes-bootcamp
  •        鏡像地址: jocatalin/kubernetes-bootcamp:v1
  •        Pod的端口: 8080

這個操作會在后台進行下面的動作:

  1. 尋找一個合適的節點能夠運行應用實例
  2. 調度該節點運行應用程序
  3. 當需要時,重新分配一個節點運行程序

 

4. 查看部署

    我們看到有1個部署正在運行應用程序的單個實例

[root@master ~]# kubectl get deployments
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp   1/1     1            1           26m

  

5. 訪問應用

    Pods運行在k8s的內部網絡,他們能夠被同一個集群的Pods訪問,但是不能被外部網絡訪問。

 kubectl命令可以創建一個代理,將通信轉發到集群范圍的專用網絡中。代理可以通過按control-c終止,並且在運行時不會顯示任何輸出。

  我們將打開第二個終端窗口來運行代理。

[root@master ~]# kubectl proxy 
Starting to serve on [::]:8001

  

api服務器將根據pod名稱自動為每個pod創建一個端點,該端點也可以通過代理訪問。

首先,我們需要獲取pod名稱,然后將其存儲在環境變量pod_name中:

export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')
echo Name of the Pod: $POD_NAME

  

通過pod的名稱訪問應用

[root@master ~]# curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME/proxy/
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-7f56b875dc-6zbjt | v=1

  

 


免責聲明!

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



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