一,Devops核心要點及kubernetes的架構概述

[TOC]node

1,devops的簡述及要點

DevOps,分層架構 ---> 微服務git

把一個程序,拆分紅幾個成百個微服務,使其相互獨立運行github

當下把微服務和容器融合起來,使其可以快速的落地。算法

DevOps 在交互和部署環節的易購程度,在部署環節異常困難,而容器的出現,徹底彌補了。docker

  • CI: 持續集成 Continues Integration

做爲運維的角度,獲得一個應程序,須要發佈到生產,藍綠部署,金絲雀,灰度發佈後端

  • CD: 持續交付 Continues Delivery
  • CD: 持續部署 Continues Deployment

2,kubernetes的簡單介紹與組成

kubernetes,簡稱K8s,是用8代替8個字符「ubernete」而成的縮寫。是一個開源的,用於管理雲平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單而且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。 Kubernetes是Google開源的一個容器編排引擎,它支持自動化部署、大規模可伸縮、應用容器化管理。在生產環境中部署一個應用程序時,一般要部署該應用的多個實例以便對應用請求進行負載均衡。api

kubernetes的GitHub源碼託管地址網絡

kubernetes中文社區架構

特性

  • 自動化: 自動部署,自動重啓,自動複製,自動伸縮/水平擴展,服務發現和負載均衡,自動發佈和回滾
  • 支持祕鑰和配置管理, 存儲編排,批量處理任務執行
  • 可移植: 支持公有云,私有云,混合雲,多重雲(multi-cloud)
  • 可擴展: 模塊化, 插件化, 可掛載, 可組合

集羣構成

稱爲:物理機羣架構是。有中心節點架構的集羣 master/nodes(worker)負載均衡

master上最重要的組件:

  • API Server

    • 提供集羣管理的 REST API 接口,包括認證受權、數據校驗以及集羣狀態變動等
    • 提供其餘模塊之間的數據交互和通訊的樞紐(其餘模塊經過 API Server 查詢或修改數據,只有 API Server 才直接操做 etcd)
  • Scheduler(調度器)

    • kube-scheduler 負責分配調度 Pod 到集羣內的節點上,它監聽 kube-apiserver,按容器運行資源需求查詢合適的 Pod,而後對符合條件的pod根據調度優選算法爲這些 Pod 分配節點(更新 Pod 的 NodeName 字段)。
  • Controller-Manager(控制器管理器,controller針對node進行健康狀態監控)

    • Controller Manager 由 kube-controller-manager 和 cloud-controller-manager 組成,是 Kubernetes 的大腦,它經過 apiserver 監控整個集羣的狀態,並確保集羣處於預期的工做狀態。
  • etcd

    • 負責保存 Kubernetes Cluster 的配置信息和各類資源的狀態信息。當數據發生變化時,etcd 會快速地通知 Kubernetes 相關組件。

node上重要的組件:

  • kubelet
    • 能夠理解爲管理維護pod運行的agent,接受任務並試圖啓動容器(要依賴容器引擎)
  • 容器引擎(最流行的docker,也能夠是其餘)
  • kube-proxy
    • node之上的守護進程,隨時與apiserver通訊,用於管理node上的各service的規則。

容許自託管:(kubernetes運行在kubernetes自身之上)

  • 在kubernetes中,最小單位是pod,邏輯的。一個pod中,能夠有多個容器。
  • 在調度器中,調度的是pod。一個pod中的全部容器,只能運行在同一個node主機上。
  • 在kubernetes中,爲了更好的管理pod,使用Label,是一個key:value格式的,其中key是有一個定的標準的,定義國有,在使用Label selector標籤選擇器來管理。
  • 集羣示意圖

pod的基本概念

Pod:kubernetes中的最小單位,相似於宿主機上的虛擬機,每一個pod上能夠運行一個或多個容器。

pod的重要組成部分:

  • Label

    • 附加到pod上,對pod進行身份識別和過濾
  • Lable Selectes

    • 篩選label符合要求的pod資源,注意:lable不單單pod上使用,全部對象均可以有lable。
pod分類
  • 自主式Pod
  • 控制器管理的Pod

Replication Controller:副本控制器 ReplicaSet:副本集控制器,幾乎不直接使用,多用Deployment Deployment:經常使用,只能用於管理無狀態的應用 StatefulSet:用於管理有狀態的應用 DaemonSet:只運行一個副本 Job:做業 Ctonjob:週期性任務做業

kubernetes網絡

kubernetes中有三種網絡:

  • 節點網絡
  • 集羣網絡 service調度的網絡(service爲後端pod提供固定地址,虛擬的,只存在於iptables規則中)
  • Pod網絡

三類通訊:

  • 同一個Pod內多個容器通訊: lo
  • 各Pod之間的通訊(經過疊加網絡便可)
  • Pod與Service之間的通訊(pod通信地址指向網關便可與service通訊)

相關文章
相關標籤/搜索