k8s in action 閱讀紀錄01 - k8s簡介

2021-08-19
3分鐘閱讀
k8s
Featured Image

讀過k8s in action的每章稍微整理,系列文章可以 按這裡

關鍵字:什麼是container,與虛擬機的不同,隔離的方法,docker簡介,kubernetes簡介

什麼是container(容器)

簡單想,就是虛擬機拉,但所需的資源(cpu,記憶體等)比開一個虛擬機出來更省,為啥會有這差別?以及為啥用container的優勢看起來比較好呢?

與虛擬機的不同

最大的不同就是,其實就是container沒有真的很隔離,他不像虛擬機,會自己開一個完全獨立的os出來

container會借用宿主的kernel,也就是用同個operating system拉

看這個圖就懂了,取自 docker blog 01

如下圖所示,host跟container是一樣用同個內核,既然kernel都用的一樣,那container是怎樣實現隔離container與host呢?

02

跟host隔離的方法

linux namespace

雖然在同個operating system上運作,但彼此使用資源的名稱是不同的,這樣就能讓process們互相認不出來,這個名稱就叫做linux namespace,大概有這些,讓process可以根據需求隔離,可能不是很精確,當作參考就好

  • MNT(mount): 文件系統,就是/的東西
  • PID(process ID): 能否用top看到對方
  • NET(network): 網路卡,能開的port
  • IPC(inter-process communication): 能否進行process間通信,這我就比較沒感覺。。
  • UTS(UNIX Time-Sharing): 主機的hostname
  • user(user id): 使用者與群組

也可用以下指令看一下目前的process放在哪個namespace上,之後跑起來的container,用top看其實也能看到,但namespace會與跑在host中的不同

ls -al /proc/$PID/ns/

cgroup

就是控制process能使用哪些資源 01

docker簡介

剛講了container的東東,那最有名做container出來的就是docker了,docker就是個可以讓別人做好可以運行的container,阿我們要用的時候,就能下載那個container下來,然後docker就能跑container起來

kubernetes簡介

簡單想,我們一直用container跑程式起來之後,container除了在一台電腦上跑,他也能串連很多台電腦,讓很多container一起支撐一個服務(load balancer),這樣很多電腦放在一起,我們可以叫他cluster,那要如何在同一個界面上,管理所有container的運行,cluster的管理? 那就是kubernetes的功能!!!

kubernetes簡單想 就是用來管理一個cluster的container分發與運行,並提供load balancer,網路的處理等服務。

小結

  • container與虛擬機的不同? container們運行在同個operating system上,虛擬機會有自己的operating system
  • container們怎麼隔離的? 透過linux namespacecgroup
  • 知道一下kubernetes就是docker的老大的感覺(有一咪咪不對,不過這樣想更好懂吧~),可以在同個地方上分配container在哪運行,運行幾個等
author:   allmwh
commit:   b63649c
comment:   mod k8s's tag
lastmod:   2021-08-21 16:38:24
Avatar
allmwh 好油哦,配口水... 紀錄一些生活的事
comments powered by Disqus