k8s 字段說明

2021-10-01 19:21:34 字數 3084 閱讀 5607

以下內容摘抄自 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...