以下內容摘抄自 kubernetes官方文件:
pod 是 kubernetes 最基本的組成塊,它是 kubernetes 最小、最簡單的可用來建立和部署的單元。 乙個 pod 代表了乙個執行在集群裡的程序。
pod 裡封裝了乙個(或者多個)應用容器,儲存資源,以及惟一的網路 ip。
docker 是 kubernetes pod 裡最常見的執行環境, 當然 pod 也支援其他的容器環境。
kubernetes 運用 pod 的方式:
pod 裡只執行乙個單獨容器 「one-container-per-pod」 模式是 kubernetes 最常見的使用場景;在這種情況下,可以把 pod 看做是乙個單獨容器的聯結器, kubernetes 通過 pod 去管理容器。
pod 中執行多個相互作用容器。 pod 封裝了一組緊耦合、共享資源、協同定址的容器。 這些協同定址的容器可能來自一組粘性很強的服務 – 比如說:在用容器的共享卷提供對外檔案服務的同時用 「sidecar」 容器重新整理、更新這些檔案。pod 將這些容器和儲存資源打包成乙個管理實體。
pod 是標準的 kubernetes 資源,它也遵循資源定義清單的基本格式:apiversion、kind、metadata、spec、status(唯讀,它是由 kubernetes 系統提供和更新)
1. spec.containers 可內嵌的字段
containers 是 pod.spec 內嵌欄位中唯一乙個帶有 -required- 標記的字段,而 containers 是乙個物件列表,下面說明一下 containers 可內嵌的各字段的作用:
1.1 name
name -required- 必須給出的字段,定義具有唯一性的容器的名稱;
舉例演示:
containers:
1.2 image
image 指明容器要執行的映象;
舉例演示:
containers:
image: nginx:1.14-alpine
1.3 imagepullpolicy
imagepullpolicy 定義映象的拉取策略,可定義的值有三個:
注意:如果標籤是 latest 那麼預設策略就是 always;
舉例演示:
containers:
image: nginx:1.14-alpine
imagepullpolicy: ifnotpresent
1.4 ports
ports 定義容器內要暴露的埠,可以暴露多個埠,而且每乙個埠都可以有多個屬性:
containerport -required- :暴露的埠
name :自定義乙個名字
protocol :協議,tcp或udp,預設為tcp
舉例演示:
containerport: 4431.5 command 和 args
command 和 args 用來修改映象中的預設應用;
args :作用等同於,dockerfile中的 cmd,向 entrypoint 傳遞引數的,如果這裡沒有給出 args 引數,而映象內即有 cmd 又有 entrypoint 則映象內 cmd 的引數將傳遞給 entrypoint 作為引數;如果這裡給了 args 那麼,映象內的 cmd 的引數就不會傳遞給 entrypoint,而是用 args 傳遞的引數;
command :作用等同於,dockerfile中的 entrypoint 指令,用於執行程式的預設命令;如果沒有給出 command 則預設執行映象製作時的預設程式
舉例演示:
apiversion: v1
kind: pod
metadata:
name: command-demo
labels:
purpose: demonstrate-command
spec:
containers:
- name: command-demo-container
image: debian
command: ["printenv"]
args: ["hostname", "kubernetes_port"]
1.6 livenessprobe 和 readinessprobe 探針
探針 是由 kubelet 對容器執行的定期診斷。要執行診斷,kubelet 呼叫由容器實現的 handler。有三種型別的處理程式:
execaction:在容器內執行指定命令。如果命令退出時返回碼為 0 則認為診斷成功。
每個容器都可以執行兩個探針:
示例:
apiversion: v1
kind: pod
metadata:
labels:
spec:
containers:
images: busybox
initcontainers:
- name: init-myservice
image: busybox
commond: ['sh' , '-c','until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
- name: init-mydb
image: busybox
commond: ['sh', '-c', 'until nslooup mydb; do echo waiting for mydb; sleep 2; done;']
K8s部署prometheus監控K8s細節
prometheus 一些配置檔案可以再github上找到。部署 root kube prometheus manifests 目錄下所有檔案 部署 root kube prometheus manifests setup 目錄下所有檔案 要注意的是自己要建立乙個工作空間 如果報錯執行下面語句 部署...
k8s 多租戶 k8s 基礎介紹
備註 1 每乙個pod裡執行著乙個特殊的容器 pause容器,其他容器都是業務容器,這些業務容器共享pause容器的網路棧和volume 邏輯卷 掛載卷。因此他們之間的通訊和資料交換更為高效。2 k8s設計了pod物件,將每個服務程序包裝到相應的pod中,使其成為pod中執行的乙個容器 contai...
k8s集群部署 docker部署k8s安裝篇
1 安裝docker 緊接著配置乙個穩定 stable 的倉庫 倉庫配置會儲存到 etc yum.repos.d docker ce.repo檔案中 yum config manager add repo 更新yum安裝的相關docke軟體包 安裝docker ce yum update y yum...