volume 、namespace
順帶說一下 volume 和 namespace ,咱們就開始分享一下 service 是什么

volume 是什么
還記得 docker 的 volume 嗎,是一個數(shù)據(jù)卷
在 K8S 中,volume 是 pod 中能夠被多個容器訪問的共享目錄 ,實際上和 docker 是一樣的
volume 是被定義在 pod 上面的,因此,volume 的生命周期和 pod 是相同的
volume 會被該 pod 中的多個容器掛載到具體的文件目錄下面,若某個容器掛掉了,是不會影響 volume 的,也就是說 volume 中的數(shù)據(jù)是不會丟失的
我們可以使用 volume:
在 pod 中指定 volume 的類型 和內容,可以使用
spec.volumes
字段需要將 volume 映射到容器中,我們可以使用
spec.containers.volumeMounts
字段
上面有說到 volume 的類型,這就可多了 , K8S 中支持的 volume 類型有:
awsElasticBlockStore
azureFile
cephfs
emptyDir
hostPath
configMap
fc (光纖通道)
。。 。 等等
可以查看這上面的文檔,每一種 卷類型都有解釋到 ?點我開始卷一下
簡單看一下 emptyDir 卷類型
emptyDir ?見名知意,emptyDir ?在創(chuàng)建 pod 的時候就會被創(chuàng)建,而且是個空的 , 只要 pod 在運行,這個卷就會一直存在
但是,當 pod 從節(jié)點上刪除的時候,這個 emptyDir ? 也會被隨之永久刪除了
使用 emptyDir 我們可以這樣寫

emptyDir 卷存儲是依賴于我們節(jié)點的存儲介質的,例如,磁盤,SSD 或者網絡存儲等等
再來看看 hostPath 類型
hostPath ?類型的卷,能夠讓對應的容器訪問當當前宿主機上指定的目錄
對于 hostPath 類型,我們盡可能的少用,官方有一個這樣的警告

例如,我們需要運行一個訪問一個 docker ?系統(tǒng)目錄的容器,那么我們可以使用 /var/lib/docker
目錄作為一個 hostPath 類型的卷
但是,只要這個 pod 離開宿主機的話,hostPath 中的數(shù)據(jù)不會被永久刪除,但是數(shù)據(jù)也不會跟著 pod 遷移到別的宿主機上面
使用 hostPath 我們可以這樣寫

關于 卷 的,我們后續(xù)可以將高階用法,以及具體的原理可以分享一波
namespace
namespace 即 命名空間
命名空間在多數(shù)情況下是用于實現(xiàn)多用戶的資源隔離的,通過集群內部的資源對象分配到不同的 命名空間中,形成邏輯上的分組,
這樣可以讓不同的組在共享使用整個集群的資源的情況下,還能夠被分組管理
在 K8S 初始狀態(tài)下,K8S 會有 3 個命名空間
default
無名字空間對象的默認名字空間
在 K8S 中,集群啟動后,會創(chuàng)建一個 default
的命名空間
如果我們創(chuàng)建的 rc ,service,pod,不指定命名空間的話,那么這些資源都將被系統(tǒng)創(chuàng)建為 default 的命名空間中
kube-system
K8S ?系統(tǒng)創(chuàng)建的對象的名字空間
kube-public
是 K8S 自動創(chuàng)建且被所有用戶可讀的名字空間
關于命名空間共享集群我們可以查看這里: 點我 進入 命名空間
我們可以這樣使用命名空間:
創(chuàng)建一個 NameSpace
apiVersion:?v1
kind:?NameSpace
metadata:
??name:?myns
--------------------
apiVersion:?v1
kind:?Pod
metadata:
??name:?busybox
??namespace:?myns
spec:
?containers:
?-?image:?busybox
???command:
???-?ls?
???name:?busybox
如上,我們創(chuàng)建了一個名為 ?myns的命名空間,創(chuàng)建了一個 pod ,指定命名空間為 ?myns
我們可以這樣查看命名空間:
kubectl get namesapces

我們也可以直接通過命令創(chuàng)建命名空間
kubectl create namespace myns

創(chuàng)建一個 pod ,指定命名空間為 myns , 創(chuàng)建后,我們可以查看指定 命名空間下的 pod 資源
kubectl get pods --namespace=命名空間

今天就到這里,學習所得,若有偏差,還請斧正
歡迎點贊,關注,收藏
朋友們,你的支持和鼓勵,是我堅持分享,提高質量的動力

好了,本次就到這里
技術是開放的,我們的心態(tài),更應是開放的。擁抱變化,向陽而生,努力向前行。
我是阿兵云原生,歡迎點贊關注收藏,下次見~