理論:kubernetes概述

前言:

docker集羣管理工具有:

swarm是docker官方的集羣管理工具

Mesos+馬拉松管理

kubernetes 佔用當前市場78% 雲原生環境 CKA認證

kubernetes就是對pod的資源管理

中間涉及到

  • linux

  • docker基本管理

  • ssl證書工作原理

  • 負載均衡4/7原理

  • 集羣分佈式概念

  • DNS域名解析原理

  • 網絡協議

1.kubernetes是什麼

2.kubernetes特性

3.kubernetes集羣架構與組件

4.kubernetes核心概念

一:kubernetes概述

kubernetes是google在2014年開源的一個容器集羣管理系統,kubernetes簡稱k8s

kubernetes用於對容器化的應用程序的部署,擴展和管理

k8s提供了容器編排,資源調度,彈性伸縮,部署管理,服務發現等一系列功能

k8s的目標是讓部署容器化應用簡單高效

官方網站:http://www.kubernetes.io

備註:docker的默認容器編排工具是compose

資源調度:可以手動指定,也可以根據算法自動指定

部署管理:用到中間的核心組件 api server,它是k8s管理的唯一入口

二:K8S的特性

2.1 自我修復

在節點故障時可以刪除失效容器,重新創建新的容器,替換和重新部署,保證預期的副本數量,kill掉健康檢查失敗的容器,並且在容器未準備好之前不會處理客戶端情況,確保線上服務不會中斷

2.2 彈性伸縮

使用命令、UI或者k8s基於cpu使用情況自動快速擴容和縮容應用程序實例,保證應用業務高峯併發時的高可用性,業務低峯時回收資源,以最小成本運行服務

2.3 自動部署和回滾

k8s採用滾動更新策略更新應用,一次更新一個pod,而不是同時刪除所有pod,如果更新過程中出現問題,將回滾恢復,確保升級不影響業務

2.4 服務發現和負載均衡

k8s爲多個容器提供一個統一訪問入口(內部IP地址和一個dns名稱)並且負載均衡關聯的所有容器,使得用戶無需考慮容器IP問題

2.5 機密和配置管理

管理機密數據和應用程序配置,而不需要把敏感數據暴露在徑向力,提高敏感數據安全性,並可以將一些常用的配置存儲在k8s中,方便應用程序調用

2.6 存儲編排

掛載外部存儲系統,無論時來自本地存儲、公有云(aws)、還是網絡存儲(nfs、GFS、ceph),都作爲集羣資源的一部分使用,極大提高存儲使用靈活性

2.7 批處理

提供一次性任務,定時任務:滿足批量數據處理和分析的場景

三:k8s集羣架構與組件

在這裏插入圖片描述

node:業務節點

主控節點master

主控節點的API server是其中唯一入口

api server管理所有的事務,並把信息記錄到etcd數據庫中

etcd有一個自動服務發現的特性機制,etcd會搭建有三個節點的集羣,實現三副本

scheduler 調度器用來調度資源,查看業務節點的資源情況,確定在哪個node上創建pod,把指令告知給api server

控制管理器controller-manager管理pod

pod可以分爲有狀態和無狀態的pod,一個pod裏最好只放一個容器

api server 把任務下發給業務節點的kubelet去執行

客戶訪問通過kube-proxy去訪問pod

pod下面的不一定是docker,還有別的容器

一般pod中只包含一個容器,除了一種情況除外,那就是elk

elk會在pod內多放一個logstash去收集日誌

3.1 各節點安裝組件

在這裏插入圖片描述

kube-proxy 代理規則:

如果container消失了,那麼master的調度器會繼續創建

在kubenetes中查看信息都是去訪問etcd

3.1.1 master 組件

  • kube-apiserver

kubernetes api,集羣的統一入口,各組件之間的協調者,以restful api提供接口服務,所有對象資源的增刪改查和監聽操作都交給apiserver處理後在提交給etcd存儲記錄

  • kube-controller-manager

處理集羣中常規的後臺任務,一種資源對應一個控制器,controller-manager就是負責管理這些控制器的

  • kube-scheduler

根據調度算法爲新創建的pod選擇一個node節點,可以任意部署,可以部署在同一個節點上,也可以部署在不同節點上

https://blog.csdn.net/li_101357/article/details/89980217
  • etcd

分佈式鍵值存儲系統,用戶保存集羣狀態數據,比如pod、service等對象信息

3.1.2 node組件

  • kubelet

kubelet時master在node節點上的代理agent,管理本node運行容器的生命週期

比如創建容器、pod掛載數據卷、下載sercet、獲取容器和節點狀態等工作

kubelet將每個pod轉換成一組容器

  • kube-proxy

在node節點上實現pod的網絡代理,維護網絡規則和四層的負載均衡工作

  • docker或rockert

容器引擎,運行容器

四:kubernetes核心概念

在這裏插入圖片描述

pod

  • 最小部署單元
  • 一組容器的集合
  • 一個pod中的容器共享網絡命名空間
  • pod是短暫的

controllers

  • replicaset:確保預期的pod副本數量
  • deployment:無狀態應用部署,比如nginx、apache,一定程度上的增減不會影響客戶體驗
  • statefulset:有狀態應用部署,是獨一無二型的,會影響到客戶的體驗
  • daemonset:確保所有node運行同一個pod,確保pod在統一命名空間
  • job:一次性任務
  • cronjob:定時任務
  • 更高級層次對象:部署和管理pod

service

  • 防止pod失聯
  • 定義一組pod的訪問策略
  • 確保了每個pod的獨立性和安全性

storage

  • volumes
  • persistent volumes

pollcies策略

  • resource quotas

other

  • label:標籤,附加到某個資源上,用戶關聯對象、查詢和篩選
  • namespaces:命名空間,將對象從邏輯上隔離
  • annotations:註釋
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章