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