天天看點

k8sminikube安裝kubectl運作第一個應用pod通路應用為什麼需要服務增加期望的副本數k8s dashboard

文章目錄

  • minikube安裝
  • kubectl
    • 檢視叢集資訊:
    • 檢視叢集節點
    • 檢視k8s對象的更多資訊
    • 為kubectl設定别名和指令行補齊
    • 建立别名
    • 為kubectl配置tab補全
  • 運作第一個應用
  • pod
    • 列出pod
  • 通路應用
    • 建立一個服務對象
  • 為什麼需要服務
  • 增加期望的副本數
  • k8s dashboard

minikube安裝

安裝參考

dashboard暴露外部通路

啟動後通路

kubectl

管理k8s指令行工具。

檢視叢集資訊:

kubectl cluster-info
           

檢視叢集節點

kubectl get nodes
           

kubectl get指令可以檢視各種k8s對象資訊。但隻會顯示對象最基本的資訊。

檢視k8s對象的更多資訊

kubectl describe node master136
           

輸出顯示了非常多的資訊,包含節點的狀态、CPU和記憶體資料、系統資訊、運作容器的節點等。

可以直接運作kubectl describe node來列出所有的節點資訊。

為kubectl設定别名和指令行補齊

建立别名

alias k=kubectl
           

可以将上述指令放入~/.bashrc檔案中,來避免重新開機失效。通過source ~/.bashrc來使其echo “source <(kubectl completion bash)” >> ~/.bashrc

生效。

為kubectl配置tab補全

可以為bash和zsh shell補全,可以補全指令名和對象名,如:

kubectl desc<TAB> no<TAB> mas<TAB>
           

需要安裝bashcompletion包,運作如下指令:

yum install bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
           

為了支援别名,需要使用如下指令修複:

source<(kubectl completion bash | sed s/kubectl/k/g)
           

運作第一個應用

最簡單的方式是使用kubectl run指令來部署應用,這樣可以建立必須的元件而無需JSON或YAML檔案。這樣就不需要了解每個元件對象的結構。如下:

kubectl run kubia --image=dockerbzb/kubia --port=8080 --generator=run/v1
           

pod

k8s并不管理容器,它使用共存容器的理念。這組容器就是pod。

一個pod是一組緊密相關的容器,它總是運作在同一個工作節點上,以及同一個命名空間中。它就像一個獨立的邏輯機器,擁有自己的IP、主機名、程序。

列出pod

無法列出單個容器,因為它們不是獨立的k8s對象。但可以列出pod。

kubectl get pods
           

擷取詳細資訊

kubectl describe podstrfws2qa
           

通路應用

pod的ip隻能通過内部通路。要讓它從外部通路,需要通過服務對象公開它,需要建立特殊的LoadBalancer類型的服務,将建立一個外部的負載均衡,可以通過負載均衡的公共IP通路pod。

建立一個服務對象

kubectl expose rc kubia --type=LoadBalancer --name kubia-http
           

可以使用k8s的縮寫,如rc表示ReplicaitonController,srv表示service。

列出服務

kubectl get services
           

MiniKube不支援LoadBalancer類型的服務。可以使用如下指令擷取服務的IP和端口。

minicube service kubia-http
           

為什麼需要服務

pod的存在是短暫的,一個pod可以在任何時刻被删除,可能是它所在的節點故障,或者有人删除了pod,或者pod被所在的健康節點剔除了。但pod被重新建立時,它的ip會發生變化。

服務被建立時,會得到一個靜态的IP。在服務的生命周期内保持不變。用戶端連接配接到服務的靜态IP,由服務負載均衡轉發到pod。

服務表示一組提供相同服務的pod。

增加期望的副本數

kubectl scale rc kubia --replicas=3
           

在k8s中,基本原則是不要告訴k8s應該做什麼,而是聲明性地改變系統的期望狀态,并讓k8s檢查目前的狀态是否和期望的狀态一緻。

k8s并不會讓應用變得可擴充,應用本身需要支援擴縮容,它隻是讓應用的擴縮容變得簡單。

kubectl get pods -o wide
           

使用上面的指令顯示更多資訊,包括節點資訊。

k8s dashboard

k8s的圖形化視圖,可以檢視k8s的pod、ReplicaitonController、服務和其他部署在k8s中的對象。以及建立、修改、删除它們。

繼續閱讀