understanding-k8s-component

要建立k8s集群前,讓我們先來了解一些組建,還記得這張圖嗎?

透過這張圖,可以發現,要建立k8s集群,必須要有機器群,而機器群的每一台機器都稱之為節點(Node),
此外,集群中一定會有一個發號司令的節點,該節點稱之為Master,而其他節點稱為Worker。
發號司令的Master是由api-Server、Scheduler、Controller-Manager、
kubectl四個組件組成。讓我們繼續往下更深入的看一下各組件的作用吧。



下面的組件都是在Master上運行,而且也只會在Master上運行。

組件名稱 作用
kubectl 是針對k8s下指令的工具,client要創建或刪除東西,都是透過該工具下指令
api-server 當kubectl下達指令,會由api-server接收所發送過來的請求,進行指揮協調工作
scheduler 調度Pod的元件,當用戶創建Pod時,按照一定的排程演算法,判定Pod需落在哪個Worker上
controller-manager k8s大管家,負責控制控制管理對應的資源,如Pod數量、副本(replication)、工作節點的監控(Worker)等


下面的組件則是在其他Node上運行,也就是Worker上運行,包含Master在內。

組件名稱 作用
kubelet 是一個代理,接受Master分配過來的任務,並把節點的訊息反饋給Master的api-server
kube-proxy 用於把發送給Service的請求轉發給後端的Pod,模式有iptables與ipvs,這在講Service的時候在作解釋。
calico 用於各節點的Pod能夠互相通信


其他

組件名稱 作用
etcd etcd 負責儲存 k8s Cluster 的配置資訊和各種資源的狀態資訊。當資料發生變化時,etcd 會快速地通知 k8s 相關組件。
flannel 維持各個節點上pod之間的通訊。


好拉~了解了這些,我們可能還需要再了解一下分布式架構,之後好配置每個節點。可以參考下面的圖片。 分布式架構,在很多地方均有使用,例如Redis、RabbitMQ、Web應用等等。

接下來的單元,會教你如何在Ubuntu系統上,建立k8s集群。學會建立k8s集群後,相對學習公有雲上的k8s就會容易許多,
因為公有雲上的k8s,幾乎都已經可以透過一行指令進行配置了。之後也會介紹如何在公有雲建制k8s集群。

docker-introduce

what is Docker

Docker 是一種軟體平台,可讓你快速地建立、測試和部署應用程式。Docker 將軟體封裝到名為容器的標準化單位,其中包含程式庫、系統工具、程式碼和執行時間等執行軟體所需的所有項目。使用 Docker,可以將應用程式快速地部署到各種環境並加以擴展,而且知道程式碼可以執行。
在很多公有雲上執行 Docker 可讓開發人員和管理員以高度可靠且低成本的方式建立、發佈和執行各種規模的分散式應用程式。


why is Docker

使用 Docker 可快速交付程式碼、標準化應用程式操作、無縫移動程式碼,以及透過提高資源使用率節省成本。可以使用 Docker 獲得能夠隨處可靠執行的單一物件。Docker 簡單易懂的語法還能提供完整的控制權。廣泛採用代表有穩固的工具和立即可用應用程式生態系統隨時可供 Docker 使用。

  1. 更快地發佈更多軟體
    • Docker 使用者發佈軟體的頻率比非 Docker 使用者平均高出 7 倍。Docker 可視需要頻繁地交付單獨的服務。
  2. 標準化操作
    • 小型的容器化應用程式可讓使用者輕鬆部署、發現問題,並透過復原來補救。
  3. 無縫移動
    • 以 Docker 為基礎的應用程式可以從本機開發機器無縫地遷移到公有雲上的生產部署。
  4. 節省資金
    • Docker 容器可在每部伺服器上輕鬆執行更多程式碼,以提升使用率和節省資金。

How to Use

  1. 如何安裝

    • 從官網下載桌面版: install on mac
    • 有brew,就直接: brew cask install docker
  2. 簡單驗證

    • docker --version
    • docker image ps

參考連結

docker 官網

Snyk introduce

what is Snyk

Snyk是一套針對開放原始碼資安平台, 能為npm、Maven、NuGet、RubyGems、PyPI 及其他工具搜尋並修正漏洞。
專門協助企業安全地採用開放源碼, 與現今主流的開發人員工作流程、程式碼控管 (如 GitHub、Bitbucket、GitLab) 以及 CI/CD 流程整合, 銜接DevOps與SecOps, 提供高效率的資訊保安流程與快速的修正時間。


why is Snyk

  1. Open Source Security
    • 在開發過程中自動搜尋並區分問題的優先順序,修復open source dependencies的漏洞。
  2. Code Security
    • 在開發過程中即時分析代碼中是否存在漏洞,並針對代碼中找到的漏洞提供修復範例。有效減省開發人員需要花在安全性議題的時間。
  3. Container Security
    • 搜尋container image(包含使用到的base image)中是否存在漏洞,並提供修復建議。也提供monitor功能,定時對container image做掃瞄,當發現漏洞時自動發出通知。
  4. Infrastructure as a Security
    • 幫助開發人員確認是否有不安全的設定(e.g. Terraform, Kubernetes),當發現不安全的設定時,提供建議給開發人員做評估並修復。

How to Use

簡單的使用方式

1
2
3
4
5
npm install -g snyk
npm install -g snyk-to-html
snyk auth $SNYK_TOKEN
snyk monitor
snyk test --json | snyk-to-html -o snyk_results.html

參考連結

snyk 官網

kubernetes introduce

what is kubernetes

Kubernetes(常簡稱為K8s)是用於自動部署、擴充和管理「容器化(containerized)應用程式」的開源系統。
該系統由Google設計並捐贈給Cloud Native Computing Foundation(今屬Linux基金會)來使用。
翻譯成大白話就是:「K8s是負責自動化運維管理多個Docker程序的集群」

why kubernetes

Kubernetes容器編排系統最初由Google開發,用於自動開發,擴展和管理應用程序容器。
它簡化了容器管理,並提供了可用性,擴展和網路功能。Kubernetes基於超過10年的大規模運行容器化工作負載的經驗。
在2015年開源發布後,該項目迅速獲得了一個非常龐大且活躍的用戶和開發人員社區。 Kubernetes 成為開源歷史上最成功的故事之一。
今天,它是容器編排最先進的市場領導者。

How to Learn kubernetes

######在學習K8s前,建議先了解一下

  1. docker的知識
  2. linux基本操作指令
  3. 網路基礎知識

接著從K8s的一些簡單架構與核心功能學習起,
我個人習慣是大致上了解概念與知悉既可,
畢竟學習k8s還是著重在操作,如果一昧的去追求理論,學習過程中會有點挫折與無趣。

######k8s架構

  1. 這是網路上找到的架構圖,先大致上了解即可,根據不懂的關鍵字進行搜索,未來文章中再陸續一個一個介紹

  1. 了解一些基本重要元件的用法

    1. POD
    2. Deployment
    3. Service
    4. Ingress
    5. Volume

  2. 大體上讀了一遍後,就可以再更深入的了解進階用法


#最後
架構的部分有點文鄒鄒,之後章節會先介紹元件。

參考連結

K8s Wiki

10分鐘帶你理解Kubernetes核心概念

K8s 官網

Hexo introduce

what is Hexo

Hexo 是利用 Node.js 所撰寫而成的部落格程式,可以利用Hexo指令產生出靜態網頁。

why Hexo

主要就是在選擇撰寫平台時,覺得市面上的部落格平台都不太符合自己想要,且想要單一維護在github上,因此找到Hexo,會選擇的原因主要為:

支援 Markdown 撰寫

用工程的方式學習寫文章,好像不錯~

一鍵部署

部落格文章也可以部署,sounds good

很炫XD

沒其他原因了…

How to Use

  1. create github repository for website
  2. npm install -g hexo-cli
  3. npm install hexo-deployer-git –save
  4. hexo init
  5. edit _config.yml
    1
    2
    3
    4
    deploy:
    type: "git" #使用 Git 部署
    repo: https://github.com/babyandy0111/notebook.git #儲存庫
    branch: "master" #儲存庫分支
  6. hexo clean && hexo g && hexo d

參考連結

Hexo

30 天利用 Hexo 打造技術部落格

markdown 教學