-
與pod建立連接
Service
Service :與云原生應用中“微服務”概念——對應
Kubernetes集群為每一個Service分配一個集群唯一的IP地址,在service的生命周期內,該IP地址不變﹔在內部DNS的支持下,輕松實現服務發現機制
Service通過label selector關聯到實際支撐業務運行的Pod上,并通過集群內置的服務負載均衡將服務請求分發到后端Pod
通過nodeport或設置loadbalancer機制實現集群外部對service的訪問
Controllers
Controller是Kubernetes核心對象之一
Controller用于保證集群內一組Pod能始終按照某種期望的狀態(desired state)正常運行
狀態包括:Pod副本數量、節點選擇、資源約束、持久化數據維持等
Kubernetes支持多種Controller,常用的Deployment
、replicaset、statefulset、daemonset等
ReplicaSet
ReplicaSet:確保健康Pod的副本數始終滿足用戶定義的數量
前身是ReplicationController(rc)
相比rc,增加集合式label selector的支持
支持單獨使用,但更多隱藏在Deployment控制器后面,由deployment自動管理
Deployment
Deployment :為Pod和ReplicaSet提供了聲明式的定義(declarative)
用戶在deployment文件中描述期望狀態,Deployment controller就會自動將Pod和Replica Set的實際狀態改變到期望狀態
Deployment支持Pod的RollingUpdate,并自動管理背后的ReplicaSet
Deployment支持將pod Rollback到之前的任意revision(僅限于pod-template模板改動)
StatefulSet
StatefulSet:提供對有狀態的應用的部署和控制的支持,1.9版本GA
適用場景︰穩定的持久化存儲、穩定的網絡標志、有序部署有序擴展、有序收縮有序刪除、有序自動滾動升級等
Pod的存儲必須由PersistentVolume Provisioner 根據請求的Storage Class進行配置,或由管理員預先配置好。
考慮數據安全性,伸縮或刪除StatefulSet不會刪除關聯的存儲﹔另外StatefulSet目前要求Headless Service負責Pod的網絡身份,用戶有責任創建此服務
DaemonSet
DaemonSet:保證在每個Node上都運行一個Pod副本
適用場景∶系統Daemon程序、監控跟蹤、日志收集等
Kubernetes 1.6之后,可設置更新策略:支持滾動更新
可指定Node: nodeSelector、nodeAffinity.podAffinity
ConfigMap
ConfigMap:常用來向Pod提供非敏感的配置信息
ConfigMap 用于保存配置數據的鍵值對,可以用來保存單個屬性,也可以用來保存配置文件
ConfigMap可以使用命令行基于字面值、文件或目錄來創建或通過configmap對象定義文件創建
ConfigMap可以通過三種方式在Pod中使用:環境變量、容器命令行參數或以文件形式通過數據卷插件掛載到Pod中
Secret
Secret解決的是集群內密碼、token、密鑰等敏感數據的配置問題
常用于與ServiceAccount關聯,存儲在tmpfs 文件系統中,Pod刪除后Secret文件也會對應的刪除
支持Opaque , kubernetes.io/Service Account , kubernetes.io/dockerconfigjson三種類型
Secret可以以Volume或者環境變量的方式使用
查看全部 -
Pod:集群調度基本單元
Pod :一個有特定關系的容器集合
Pod是集群中可以創建和部署的最小且最簡的kubernetes對象單元
Pod也是一種封裝。它封裝了應用容器,存儲資源、獨立的網絡IP以及決定容器如何運行的策略選項
每個Pod中預置一個Pause容器,其名字空間、IPC資源、網絡和存儲資源被Pod內其他容器共享。Pod中的所有容器緊密協作,并且作為一個整體被管理、調度和運行
Pod生命周期
Pod :一個非持久性實體
查看全部 -
Namespace(名字空間)
Namespace,不僅僅是一個屬性,本身也是一個object
Namespace :用于將物理集群劃分為多個虛擬集群
Namespace間完全隔離,因此也常被用來隔離不同的用戶(及權限)
內置三個Namespaces: default、kube-system和kube-public,Node和PersistentVolume不屬于任何namespace
Label(標簽)
Label用于建立集群對象之間的靈活的、松耦合的多維關聯關系
一個label是一個鍵-值對,其中的key、value均由用戶自己定義
label可以附著在任何對象上,每個對象也可以有任意個標簽。標簽可在對象定義時附加上,也可以通過命令動態管理標簽
Label可以將有組織目的的結構映射到集群對象上,從而形成一個與現實世界管理結構同步對應松耦合的、多維的對象管理結構
Annotations(注解)
Annotations :可以將任意非標識性元數據附加到對象上
Annotations也是以鍵值對形式呈現
◆工具和庫可以檢索到并使用這些Annotations元數據
將數據作為Annotation附著在對象上,有利于創建一些用于部署、管理和做內部檢查的共享工具或客戶端
查看全部 -
Kubernetes對象
Kubernetes對象∶是一種持久化的、用于表示集群狀態的實體
—種聲明式的意圖的記錄,一般使用yaml文件描述對象
Kubernetes集群使用Kubernetes對象來表示集群的狀態
通過API/kubectl管理Kubernetes對象
查看全部 -
Node:工作負載節點
Node : Kubernetes集群中真正的工作負載節點
Kubernetes集群由多個Node共同承擔工作負載,Pod被分配到某個具體的Node上執行
kubernetes通過node controller對node資源進行管理。支持動態在集群中添加或刪除Node
每個集群Node上都會部署Kubelet和Kube-proxy兩個組件
組件:Kubelet
Kubelet :
位于集群中每個Node上的非容器形式的服務進程組件,Master和node之間的橋梁
處理Master下發到本Node上的Pod創建、啟停等管理任務;向APIServer注冊Node信息
監控本Node上容器和節點資源情況,并定期向Master匯報節點資源占用情況
組件:Kube-proxy
Kube-proxy:運行在每個Node上
Service抽象概念的實現,將到Service的請求按策略(負載均衡)算法分發到后端Pod(Endpoint)上
默認使用iptables mode實現
支持nodeport模式,實現從外部訪問集群內的service
查看全部 -
邏輯控制中心
Master
Kubernetes集群大腦,控制平面∶
所有集群的控制命令都傳遞給Master組件并在其上執行
每個Kubernetes集群至少有一套Master組件(當前默認:一個)
每套master組件包括三個核心組件(apiserver, scheduler
和controller-manager)以及集群數據配置中心etcd
組件:API Server-核心
API Server :
集群控制的唯一入口,是提供Kubernetes集群控制RESTful API的核心組件
集群內各個組件之間數據交互和通信的中樞
提供集群控制的安全機制(身份認證、授權以及admission control)
組件:Scheduler
Scheduler :
通過API Server的Watch接口監聽新建Pod副本信息,并通過調度算法為該Pod選擇一個最合適的Node
支持自定義調度算法provider
默認調度算法內置預選策略和優選策略,決策考量資源需求、服務質量、軟硬件約束、親緣性、數據局部性等指標參數
組件:ControllerManager
ControllerManager :
集群內各種資源controller的核心管理者
針對每一種具體的資源,都有相應的Controller
保證其下管理的每個Controller所對應的資源始終處于“期望狀態”。
組件:Etcd
Etcd :
Kubernetes集群的主數據庫,存儲著所有資源對象以及狀態
默認與Master組件部署在一個Node上
Etcd的數據變更都是通過API Server進行
查看全部 -
架構圖
查看全部 -
yaml文件
1.service部署
創建服務:kubectl create -f hello-service.yaml --record
查看服務是否創建成功:kubectl get svc |grep hello-service
查看服務詳細信息:kubectl describe svc/hello-service
訪問該服務:curl ip+port/hello
在前臺啟動一個訪問kube內部的busybox容器:kubectl run -i --tty busybox --image=busybox --restart=Never
2.deployment部署
hello-deployment文件
3.請求的自動負載均衡
4.服務伸縮
修改deployment文件的replicas
修改生效
日志
5.服務版本升級與回退
修改deployment文件版本
監控pod升級過程:逐步替換
快速回滾上一版本:
查看全部 -
容器編排管理平臺
Kubernetes作為容器管理平臺提供∶
以Pod(容器組)為基本的編排和調度單元以及聲明式的對象配置模型(控制器、configmap、secret等)
資源配額與分配管理
健康檢查、自愈、伸縮與滾動升級
微服務支撐平臺
Kubernetes提供了對微服務的支撐︰
服務發現、服務編排與內部路由支持
服務快速部署和自動負載均衡
提供對“有狀態”服務的支持等
可移植的“云平臺”
Kubernetes提供∶
新一代應用云化的事實標準,成為面向云原生應用的新可移植層,即新“云平臺"
為用戶提供簡單且一致的容器化應用部署、伸縮和管理機制,形成新的、通用的應用云化模型
云廠商鎖定的問題得以解決,云應用支持跨云遷移
Why Kubernetes
從生態圈角度∶
Google的業內最成熟的容器編排管理經驗的輸出
2017年戰勝Docker Swarm和Apache Mesos,成為云原生應用唯─值得綁定的容器編排管理平臺
傳統云平臺提供商的全面支持:Google k8s engine、Red Hat的OpenShift、Microsoft的Azure container service、IBM的cloud container service
從云應用角度,Kubernetes帶來的好處∶
容器管理、調度和編排的事實標準∶擺脫鎖定,支持跨云
先進的Workload管理之經驗模型:Pod和Controllers
原生支持微服務抽象︰服務注冊、服務發現和自動負載均衡
查看全部 -
Kubernetes是什么?
Kubernetes是以Google內部容器編排管理平臺Borg為原型的開源實現
一個容器編排管理平臺
一個微服務支撐平臺
一個可移植的“云平臺”
查看全部 -
1
查看全部 -
1
查看全部 -
虛擬化在20世紀60年代被提出
VMware虛擬機:提升計算機資源,降低使用成本
亞馬遜開啟基礎設施即服務
以虛擬化方式部署敏感,機密的服務
平臺即服務 PaaS
軟件即服務 SaaS
容器化2013-至今
docker:容器新時代
與VM相比,容器具有開發交付流程操作對象同步、執行更為高效、資源占用更為集約等優勢。
計算基本單元由虛擬機變為了容器,越來越多應用的構建、部署與運行選擇在容器中進行。
云原生:初期2015-至今
基礎前提︰應用的容器化和微服務化。容器,作為應用部署、運行和管理的基本單元;
CNCF,Kubernetes : 2015年
CNCF組織的成立為應用上云安全地采用云原生模式提供了更穩、更快、更安全的解決方案,其核心是Kubernetes。
查看全部 -
盛世嫡妃是的發送到飯
查看全部 -
地方所發生的事達搜索的發送到發的
查看全部
舉報