你女兒也能看懂的插畫版 Kubernetes 指南
編者按:Matt Butcher 是 Deis 的平臺架構師,熱愛哲學,咖啡和精雕細琢的程式碼。有一天女兒走進書房問他什麼是 Kubernetes,於是就有了這本插畫版的 Kubernetes 指南,講述了勇敢的 Phippy(一個 PHP 應用),在 Kubernetes 的冒險故事,滿滿的父愛有木有!
某一天
有一天,女兒走進書房問我:『親愛的爸爸,什麼是 Kubernetes 呢?』
我回答她:『Kubernetes 是一個開源的 Docker 容器編排系統,它可以排程計算叢集的節點,動態管理上面的作業,保證它們按使用者期望的狀態執行。通過使用「labels」和「pods」的概念,Kubernetes 將應用按邏輯單元進行分組,方便管理和服務發現。』
女兒更疑惑了……於是就有了這個故事。
給孩子的插畫版 Kubernetes 指南
很久很久以前,有一個叫 Phippy 的 PHP 應用,她很單純,只有一個頁面。她住在一個託管服務裡,周圍還有很多可怕的應用,她都不認識,也不想去認識,但是他們卻要共享這裡的環境。所以,她一直都希能有一個屬於自己的環境:一個可以稱作 home 的 webserver。
每個應用的執行都要依賴一個環境,對於一個 PHP 應用來說,這個環境包括了一個 webserver,一個可讀的檔案系統和 PHP 的 engine。
有一天,一隻可愛的鯨魚拜訪了 Phippy,他建議 Phippy 住在容器裡。Phippy 聽從了鯨魚的建議搬家了,雖然這個容器看起來很好,但是……怎麼說呢,就像是漂浮在海上的一個小房間一樣,還是沒有家的感覺。
不過容器倒是為應用提供了隔離的環境,在這個環境裡應用就能執行起來。但是這些相互隔離的容器需要管理,也需要跟外面的世界溝通。共享的檔案系統,網路,排程,負載均衡和資源分配都是挑戰。
『抱歉……孩子……』鯨魚聳聳肩,一搖尾消失在了海平面下…… Phippy 還沒有來得及失望,就看到遠方駛來一艘巨輪,掌舵的老船長非常威風。這艘船乍一看就是大了點,等到船走近了,Phippy 才發現船體兩邊掛滿了皮筏。
老船長用充滿智慧的語氣對 Phippy 說:『你好,我是 Kube 船長』。
『Kubernetes』是希臘語中的船長,後來的『Cybernetic』和『Gubernatorial』這兩個詞就是從 Kubernetes 衍生來的。Kubernetes 專案由 Google 發起,旨在為生產環境中成千上萬的容器,構建一個健壯的平臺。
『您好,我是 Phippy。』
『很高興認識你。』船長邊說,邊在 Phippy 身上放了一個 name tag。
Kubernetes 使用 label 作為『nametag』來區分事物,還可以根據 label 來查詢。label 是開放式的:可以根據角色,穩定性或其它重要的特性來指定。
Kube 船長建議 Phippy 可以把她的容器搬到船上的 pod 裡,Phippy 很高興地接受了這個提議,把容器搬到了 Kube 的大船上。Phippy 感覺自己終於有家了。
在 Kubernetes 中,pod 代表著一個執行著的工作單元。通常,每個 pod 中只有一個容器,但有些情況下,如果幾個容器是緊耦合的,這幾個容器就會執行在同一個 pod 中。Kubernetes 承擔了 pod 與外界環境通訊的工作。
Phippy 對這一切都感到很新奇,同時她也有很多與眾不同的關注點:『如果我想要複製自己該怎麼做呢?按需的……任意次數的可以嗎?』
『很簡單。』船長說道,接著就給 Phippy 介紹起了 replication controller。
Replication controller 提供了一種管理任意數量 pod 的方式。一個 replication controller 包含了一個 pod 模板,這個模板可以被不限次數地複製。通過 replication controller,Kubernetes 可以管理 pod 的生命週期,包括擴/縮容,滾動部署和監控等功能。
Phippy 就這樣在船上和自己的副本愉快地生活了好多天。但是每天只能面對自己的副本,這樣的生活也太孤單了。
Kube 船長慷慨地笑道:『我有好東西給你。』
說著,Kube 船長就在 Phippy 的 replication controller 和船上其它地方之間建了一個隧道:『就算你們四處移動,這個隧道也會一直待在這裡,它可以幫你找到其它 pod,其它 pod 也可以找到你。』
service 可以和 Kubernetes 環境中其它部分(包括其它 pod 和 replication controller)進行通訊,告訴它們你的應用提供什麼服務。Pod 可以四處移動,但是 service 的 IP 地址和埠號是不變的。而且其它應用可以通過 Kubernetes 的服務發現找到你的 service。
有了 service,Phippy 終於敢去船上其它地方去玩了,她很快就有了新朋友 Goldie。有一天,Goldie 送了 Phippy 一件禮物,沒想到 Phippy 只看了一眼就哭了。
『你怎麼哭了?』Goldie 問道。
『我太喜歡這個禮物了,可惜沒地兒放……』Phippy 都開始抽泣了。Goldie 一聽原來是這麼回事,馬上就告訴 Phippy:『為什麼不放在一個 volume 裡呢?』
Volume 代表了一塊容器可以訪問和儲存資訊的空間,對於應用來說,volume 是一個本地的檔案系統。實際上,除了本地儲存,Ceph、Gluster、Elastic Block Storage 和很多其它後端儲存都可以作為 volume。
Phippy 漸漸地愛上了船上的生活,她很享受和新朋友的相處(Goldie 的每個 pod 副本也都很 nice)。但是回想起以前的生活,她又在想是不是可以有一點點私人空間呢?
Kube 船長很理解:『看起來你需要 namespace。』
Namespace 是 Kubernetes 內的分組機制。Service,pod,replication controller 和 volume 可以很容易地和 namespace 配合工作,但是 namespace 為叢集中的元件間提供了一定程度的隔離。
於是,在 Kube 船長的船上,Phippy 和她的朋友們開始了海上的歷險,最重要的是,Phippy 找到了自己的家。
從此,Phippy 過上了幸福的生活。
視訊版
相關文章
- 興趣變高薪副業,知名插畫師走尺帶你感受插畫的魅力高薪
- 新手也能看懂的 SpringBoot 非同步程式設計指南Spring Boot非同步程式設計
- 小白也能看懂的MySQLMySql
- 【AI繪畫】絕美春天插畫,人人都是插畫師AI
- Kubernetes指南(中文版)
- 小白也能看懂的 AUC 曲線詳解
- 小白也能看懂的Java記憶體模型Java記憶體模型
- 小白也能看懂的ArrayList的擴容機制
- 這些插畫APP引導頁設計,你收藏了嗎APP
- promise初體驗,小白也能看懂Promise
- 不是技術也能看懂雲原生
- 女朋友也能看懂的Zookeeper分散式鎖原理分散式
- 小白也能看懂的JVM記憶體區域JVM記憶體
- 小白也能看懂的快取雪崩、穿透、擊穿快取穿透
- 如何在論文中畫出漂亮的插圖?
- MediBang Paint Pro 漫畫及插畫工作軟體AI
- 小白也能看懂的機器學習之整合演算法機器學習演算法
- 絕對乾貨!初學者也能看懂的DPDK解析
- 【筆記】草履蟲也能看懂的ELK搭建流程筆記
- Apache Kafka 的兒童讀物/插圖指南ApacheKafka
- 沒GPU也能玩梵高作畫:Ubuntu tensorflow CPU版GPUUbuntu
- A的女兒是B的女兒的媽媽,A是B的誰?
- 原創插畫是如何來的,你這樣一看就明白了(附教程)
- 手繪小插畫之思考的樂趣(1)
- 手繪小插畫之思考的樂趣(2)
- Ai繪畫教程:如何用ai繪畫軟體來生成城市插畫AI
- Android:單機版的“你畫我猜”你敢信?(Path的使用)Android
- 從Webpack原始碼探究打包流程,萌新也能看懂~Web原始碼
- Clip Studio Paint EX for Mac(漫畫插畫製作軟體)AIMac
- Clip Studio Paint EX for Mac(漫畫、插畫創作軟體)AIMac
- 插畫師 Simón Prades的抽象藝術作品抽象
- OpenFaaS的Kubernetes 部署指南
- 插畫 | 一起來探險吧! 分享一位登頂A站人氣前十的絕美場景插畫大佬~
- 泰媒:AI為你創作的畫,版權歸誰?AI
- Canvas畫板—手機上也可以用的畫板Canvas
- 論恐怖遊戲如何做才能更恐怖,畫素畫面也能嚇得你叫遊戲
- 手繪小插畫之思考的樂趣(未用小稿)
- 小白也能看懂的JDK1.8前_HashMap的擴容機制原理JDKHashMap