云原生周報第 2 期 | 2019-07-01~2019-07-05

這是云原生周報第 2 期,主要分享云原生社區(qū)最新開源項目,優(yōu)秀博客、電子書和視頻。

1. 開源項目推薦

Kube Forwarder : Kubernetes 端口轉(zhuǎn)發(fā)的 GUI 客戶端,支持多集群,斷開后可自動重連(kubectl 可做不到這一點(diǎn)哦),可對多個 Service 同時進(jìn)行端口轉(zhuǎn)發(fā)。

image

Kube eagle : 這是一個 Prometheus Exporter,用來更精確地抓取 Kubernetes 集群中 Pod 資源的 requestslimits 和實(shí)際使用量。

image

Kube-hunter : Kubernetes 集群滲透測試工具,從事安全工作的相關(guān)人員可以關(guān)注一下。

ko : 用來在 Kubernetes 中構(gòu)建并部署 golang 應(yīng)用的工具。它的使用方法非常簡單,如果你想構(gòu)建一個 golang 應(yīng)用,并把它部署到 Kubernetes 集群中,只需要編寫一個如下的 YAML 文件:

# helloworld.yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: hello-world
spec:
  selector:
    matchLabels:
      foo: bar
  replicas: 1
  template:
    metadata:
      labels:
        foo: bar
    spec:
      containers:
      - name: hello-world
        # 將 image 的值換成 golang 的項目路徑
        # 比如如果你的項目路徑為 ~/gopath/src/github.com/mattmoor/examples
        # 那么 image 的值為 github.com/mattmoor/examples
        image: github.com/mattmoor/examples/http/cmd/helloworld
        ports:
        - containerPort: 8080

然后使用命令 ko apply -f helloworld.yaml 即可自動編譯成二進(jìn)制文件、構(gòu)建鏡像然后部署到集群中,一步到位!

Cluster version of VictoriaMetrics : VictoriaMetrics 是 Prometheus 支持的遠(yuǎn)程存儲,而集群版 VictoriaMetrics 用來實(shí)現(xiàn)大規(guī)模 Prometheus 集群的高可用,并提供了全局視圖和可靠的歷史數(shù)據(jù)存儲,與 Thanos 的功能類似,但比 Thanos 的架構(gòu)更簡單,值得一試!

image

Service Mesh Hub : solo.io 開源的 Service Mesh 倉庫,提供了一個 Dashboard 用來發(fā)現(xiàn)和部署不同類型的 Service Mesh,也可以管理每個 Service Mesh 的擴(kuò)展。

image

這是倉庫里包含的所有擴(kuò)展:

image

Kubernetes Standardized Glossary : 這是 Kubernetes 官方文檔新出的標(biāo)準(zhǔn)術(shù)語表,對每種資源類型和組件都有標(biāo)準(zhǔn)化的解釋。

netramesh : 這是一個輕量級的 Service Mesh 框架。你沒有聽錯,這是一個全新的 Service Mesh 框架。據(jù)官方文檔所述,它比 IstioLinkerd2 的資源消耗更少,性能更高,每個 Sidecar 大約消耗 10-50Mb 的內(nèi)存和 1ms 的延遲開銷。這是它的架構(gòu)圖:

image

KubeOne : Golang 編寫的 Kubernetes 高可用集群部署工具,底層使用的是 kubeadm。

ingress-nginx kubectl plugin : NGINX Ingress Controller 的 kubectl 插件,可用來方便快速地調(diào)試 ingress。通過該插件,你可以直接查看某個 ingress 資源后端有哪些 endpoint,直接導(dǎo)出某個域名的證書和秘鑰,也可以導(dǎo)出 Nginx 的配置文件,非常實(shí)用。

Singer : Printerest 開源的高性能可擴(kuò)展日志收集 agent,可對接 Kafaka。

image

2. 博客推薦

Multi-Container Pods in Kubernetes : 在 Kubernetes 中,Pod 是最小的調(diào)度單元,Pod 中可以只運(yùn)行一個容器,也可以運(yùn)行多個容器。本文主要討論了在什么場景下需要在一個 Pod 中運(yùn)行多個容器,主要包括三種需求:共享存儲、進(jìn)程間通信、共享網(wǎng)絡(luò)。

云原生架構(gòu)的五大原則 : 這是一篇 Google Cloud 的官方博客,描述了云原生架構(gòu)應(yīng)該遵循的五個準(zhǔn)則。

使用 nftables 實(shí)現(xiàn) API Server 的高可用 : 這篇文章比較有意思,詳細(xì)描述了如何用 nftables 來實(shí)現(xiàn) API Server 的高可用,后面還提到了如何用 nftables 來實(shí)現(xiàn) kube-proxy 的四層負(fù)載均衡功能。

podpreset批量添加時區(qū)配置 : 使用 Docker 鏡像來部署應(yīng)用時,大家都會遇到一個讓人頭疼的問題,那就是時區(qū)不一致。為了解決這個問題,也涌現(xiàn)出了各種各樣的方法,例如改 Dockerfile,將宿主機(jī)的 /etc/localtime 掛載到容器中等。本文給出了一種一勞永逸的巧妙方法,大家可以嘗試一下。

容器環(huán)境中的應(yīng)用彈性能力 : 本文介紹了如何在容器環(huán)境中提高應(yīng)用的彈性能力和可用性。

彈性能力設(shè)計模式:重試,回退,超時,斷路器 : 本文主要討論了松耦合、隔離和延遲控制是如何對系統(tǒng)的彈性能力產(chǎn)生積極的影響。其中重試模式可以通過多次嘗試來恢復(fù)通信,回退模式可以在本地解決通信故障,斷路器可以抵擋由于重試而導(dǎo)致的 DoS 攻擊以及當(dāng)持續(xù)出現(xiàn)通信錯誤時可以快速回退。

明智的微服務(wù)之路 : 過去幾年中,越來越多的創(chuàng)業(yè)公司轉(zhuǎn)向了微服務(wù)架構(gòu),DevOps 相關(guān)招聘需求暴增,容器文化盛行。這篇文章試圖解釋這一切背后的原因,先列出了微服務(wù)架構(gòu)的痛點(diǎn),增加了系統(tǒng)的各種復(fù)雜度,最后告訴我們即使微服務(wù)架構(gòu)增加了各種復(fù)雜度,你仍然可以轉(zhuǎn)向微服務(wù)架構(gòu)的原因。

macvtap實(shí)踐教程 : macvtap 是網(wǎng)絡(luò)虛擬化常用的一種技術(shù),基于傳統(tǒng)的 MACVLAN。它可以用來簡化虛擬化環(huán)境中的交換網(wǎng)絡(luò),代替?zhèn)鹘y(tǒng)的 Linux TAP 設(shè)備加 Bridge 設(shè)備組合。kata 的虛擬化網(wǎng)絡(luò)就用了這個技術(shù),通過本文的實(shí)踐可以幫助你理解 kata 的網(wǎng)絡(luò)原理。

解決 CoreDNS 緩存不一致而導(dǎo)致的域名解析問題 : 如果你在 CoreDNS 中啟用了 cacheautopath 插件,并且 CoreDNS 版本低于 1.5.1,就會遇到緩存不一致的問題。本文作者是該 bug 的修復(fù)者,他會帶領(lǐng)我們一步一步進(jìn)行調(diào)查,最后找到問題所在。

3. 視頻推薦

Envoy SDS:增強(qiáng) Istio 的安全性 : Istio 1.1 之前,Istio 為工作負(fù)載提供的密鑰和證書是由 Citadel 生成并使用加載 Secret 卷的方式分發(fā)給 Sidecar 的,這種方式有很多缺陷,比如證書輪換造成的性能損失和安全漏洞。在 Istio 1.1 中,可以使用 SDS 來解決這些問題,它的主要工作原理如下:

  1. 工作負(fù)載的 Sidecar 從 Citadel 代理中請求密鑰和證書:Citadel 代理是一個 SDS 服務(wù)器,這一代理以 DaemonSet 的形式在每個節(jié)點(diǎn)上運(yùn)行,在這一請求中,Envoy 把 Kubernetes service account 的 JWT 傳遞給 Citadel 代理。
  2. Citadel 代理生成密鑰對,并向 Citadel 發(fā)送 CSR 請求: Citadel 校驗 JWT,并給 Citadel 代理簽發(fā)證書。
  3. Citadel 代理把密鑰和證書返回給工作負(fù)載的 Sidecar。

本視頻主要演示了 SDS 是如何高效地進(jìn)行證書輪換,以及 Citadel 是如何獨(dú)立于其他 Istio 組件工作的。

視頻觀看地址:https://www.yangcs.net/posts/cloud-native-weekly-2/

使用 Envoy,Cilium 和 BPF 進(jìn)行透明混沌測試 : 混沌測試主要用來在分布式系統(tǒng)上做對照實(shí)驗,引入混沌:服務(wù)器崩潰、硬盤異常、網(wǎng)絡(luò)連接中斷等,從而幫助建立對系統(tǒng)承受不可避免的故障的能力的信心。目前大部分的混沌測試都是手動完成的,本視頻演示了如何將 Envoy 和 Cilium、BPF 結(jié)合使用,以完全透明的方式將服務(wù)不可用性、延遲和隨機(jī)限速等混亂引入 Kubernetes 集群。

視頻觀看地址:https://www.yangcs.net/posts/cloud-native-weekly-2/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容