編排的藝術| K8S 中的容器編排和應用編排

當我們在說容器編排的時候,我們在說什麼?在傳統的單體式架構的應用中,我們開發、測試、交付、部署等都是針對單個組件,我們很少聽到編排這個概念。而在雲的時代,微服務和容器大行其道,除了為我們顯示出了它們在敏捷性,可移植性等方面的巨大優勢以外,也為我們的交付和運維帶來了新的挑戰:我們將單體式的架構拆分成越來越多細小的服務,運行在各自的容器中,那麼該如何解決它們之間的依賴管理,服務發現,資源管理,高可用等問題呢?在容器環境中,編排通常涉及到三個方面: 資源編排 - 負責資源的分配,如限制 namespace 的可用資源,scheduler 針對資源的不同調度策略; 工作負載編排 - 負責在資源之間共享工作負載,如 Kubernetes 通過不同的 controller 將 Pod 調度到合適的 node 上,並且負責管理它們的生命周期; 服務編排 - 負責服務發現和高可用等,如 Kubernetes ...
Read more

從 16 年到 18 年,美圖全面容器化踩過的那些坑

今天主要會圍繞美圖的業務情況,聊一聊在容器基礎平台建設探索過程中遇見的一些問題,以及具體如何落地的方案,希望可以給大家一些參考。美圖公司成立於2008年10月,懷揣著「成為全球懂美的科技公司」的願景,創造了一系列軟硬體產品,如美圖秀秀、美顏相機、短視頻社區美拍以及美圖拍照手機, 美圖產品的多樣化也催生了複雜多樣的服務端技術,億級MAU對服務端的技術要求也越加嚴苛。 2016 年我們開始調研容器化相關技術,2017年我們開始擁抱Kubernetes,2018年容器平台基本落成並推進業務的整體容器化。我們期望通過容器化可以提升公司研發人員的線上支撐能力,提升持續開發和集成的能力,提升整體資源利用率和服務的可用性。 二、容器化建設 2.1 ...
Read more

在 Kubernetes 上搭建 EFK 日誌收集系統

在創建 Elasticsearch 集群之前,我們先創建一個命名空間,我們將在其中安裝所有日誌相關的資源對象。新建一個 kube-logging.yaml 文件:apiVersion: v1 kind: Namespace metadata: name: logging 然後通過 kubectl 創建該資源清單,創建一個名為 logging 的 namespace:$ kubectl create -f kube-logging.yaml namespace/logging created $ kubectl get ns NAME STATUS AGE default Active 244d istio-system Active 100d kube-ops Active 179d kube-public ...
Read more

理解 Istio Service Mesh 中 Envoy Sidecar 代理的路由轉發

下面是從 Sidecar 注入、Pod 啟動到 Sidecar proxy 攔截流量及 Envoy 處理路由的步驟概覽。1. Kubernetes 通過 Admission Controller 自動注入,或者用戶使用 istioctl 命令手動注入 sidecar 容器。 2. 應用 YAML 配置部署應用,此時 Kubernetes API server 接收到的服務創建配置文件中已經包含了 Init 容器及 sidecar proxy。3. 在 sidecar proxy 容器和應用容器啟動之前,首先運行 Init 容器,Init 容器用於設置 iptables(Istio 中默認的流量攔截方式,還可以使用 BPF、IPVS 等方式) 將進入 pod 的流量劫持到 Envoy sidecar proxy。所有 TCP 流量(Envoy 目前只支持 TCP 流量)將被 sidecar ...
Read more

Envoy 、 Nginx 和 HAProxy,微服務中的通信代理該如何抉擇? 翻譯自英文博客

近些年,由於容器技術的崛起,微服務架構流行了起來。而面對微服務的服務網格( Service Mesh )架構,如何選擇每一個微服務的通信 proxy 變得至關重要。本文翻譯自 Datawire CEO Richard Li 的英文博客: 「 Envoy vs NGINX vs HAProxy: Why the open source Ambassador API Gateway chose Envoy 「。博客中對於微服務中 proxy ...
Read more

《Kubernetes 從上手到實踐》正式上線

Kubernetes 基礎架構 Kubernetes 的基礎技能, 覆蓋常見 Case 從零搭建 Kubernetes 集群 與 Kubernetes 相關的 Docker 和 Linux 內核知識補充 深入 Kubernetes 組件的原理和源碼解析 了解 Kubernetes 進階相關知識體系 適宜人群 了解 Docker,希望能進入 K8S 領域的各領域工程師; 正在或即將在生產環境使用 K8S 的後端工程師; 需要維護或在公司落地 K8S 的運維工程師; 想要走在技術前沿的前端/後端/運維工程師; 準備查缺補漏的容器相關開發工程師;
Read more

微軟資深工程師詳解 K8S 容器運行時

Kubernetes 已成為容器編排調度領域的事實標準,其優良的架構不僅保證了豐富的容器編排調度功能,同時也提供了各個層次的擴展介面以滿足用戶的定製化需求。其中,容器運行時作為 Kubernetes 管理和運行容器的關鍵組件,當然也提供了簡便易用的擴展介面,也就是 CRI(Container Runtime Interface)。CRI 促進了容器運行時的繁榮發展,也為強隔離、多租戶等複雜的場景帶來更多的選擇。歡迎戳 「閱讀原文」 觀看講師【現場視頻】,對話框回復【資料下載】獲取本文 PPT。 本文將介紹 Kubernetes 容器運行時的演進過程、社區如何藉助容器運行時滿足各種複雜的多租戶場景以及 Kubernetes 社區在容器運行時未來的發展展望。主要內容包括四個部分: 簡單介紹 Kubernetes 的架構,特別是 kubelet 架構,依次確定容器運行時在 Kubernetes ...
Read more

K8S容器編排之POD健康檢測(2)

Tags: Kubernetes
ReadinessProbe探針的使用場景livenessProbe稍有不同,有的時候應用程序可能暫時無法接受請求,比如Pod已經Running了,但是容器內應用程序尚未啟動成功,在這種情況下,如果沒有ReadinessProbe,則Kubernetes認為它可以處理請求了,然而此時,我們知道程序還沒啟動成功是不能接收用戶請求的,所以不希望kubernetes把請求調度給它,則使用ReadinessProbe探針。ReadinessProbe和livenessProbe可以使用相同探測方式,只是對Pod的處置方式不同,ReadinessProbe是將Pod ...
Read more

Docker鏡像獲取(gcr.io等)

在學習了Docker之後, 我們知道一般來說拉取鏡像會非常簡單:docker pull ubuntu:latest 但是google的一些鏡像由於牆的原因沒有辦法直接獲取,這點在kubernetes使用過程中經常遇到,下面提供幾種方法: 從Docker Hub搜索 (或者其他倉庫) 如果沒有配置的話,默認的倉庫是Docker Hub 這裡以 studyjob-controller 為例:docker search studyjob-controller 裡面會顯示可以下載的鏡像列表,一般來說,會有從google自動拉取的鏡像:docker pull <image you found> // 拉取鏡像 docker tag <image you found> ...
Read more

Kubernetes網路模型原理

Tags: Kubernetes
導語:Kubernetes目前看來已經成為了docker的應用最多的編排工具,所以學習使用docker容器的話,就免不了使用Kubernetes,但是其網路原理還是比較晦澀難懂,所以還是有必要專門解析關於Kubernetes的網路原理。Kubernetes的網路模型組成 1.Pod內部docker容器之間網路通信[基礎docker網路理論]2.Pod所在的網路之間通信[基礎docker網路理論]3.Pod和Service之間網路通信[Kubernetes網路理論]4.外界與Service之間網路通信[Kubernetes網路理論] Pod內部docker容器之間網路通信Kubernetes使用了一種「IP-per-pod」網路模型:為每一個Pod分配了一個IP地址,Pod內部的docker容器共享Pod的網路空間,即它們共享Pod的網卡和IP。其原理是根據docker的「container網路」模 ...
Read more
1 2 8 Next