亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Kubernetes基礎:開啟云原生之門

tonybai 全棧工程師
難度中級
時長 1小時44分
學習人數
綜合評分8.80
43人評價 查看評價
9.0 內容實用
8.7 簡潔易懂
8.7 邏輯清晰
  • http://img1.sycdn.imooc.com//6270cd120001f66c08050426.jpg

    與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中

    http://img1.sycdn.imooc.com//6270d01f0001a25b08410433.jpg

    Secret

    Secret解決的是集群內密碼、token、密鑰等敏感數據的配置問題

    常用于與ServiceAccount關聯,存儲在tmpfs 文件系統中,Pod刪除后Secret文件也會對應的刪除

    支持Opaque , kubernetes.io/Service Account , kubernetes.io/dockerconfigjson三種類型

    Secret可以以Volume或者環境變量的方式使用

    http://img1.sycdn.imooc.com//6270d0d20001513105160310.jpg

    查看全部
  • http://img1.sycdn.imooc.com//6270ccaf00015ee205710467.jpg

    http://img1.sycdn.imooc.com//6270ccc20001269a08030450.jpg

    Pod:集群調度基本單元

    Pod :一個有特定關系的容器集合

    Pod是集群中可以創建和部署的最小且最簡的kubernetes對象單元

    Pod也是一種封裝。它封裝了應用容器,存儲資源、獨立的網絡IP以及決定容器如何運行的策略選項

    每個Pod中預置一個Pause容器,其名字空間、IPC資源、網絡和存儲資源被Pod內其他容器共享。Pod中的所有容器緊密協作,并且作為一個整體被管理、調度和運行

    Pod生命周期

    Pod :一個非持久性實體

    查看全部
    0 采集 收起 來源:k8s對象分類

    2022-05-03

  • http://img1.sycdn.imooc.com//6270ca0b00011fed08080335.jpg


    Namespace(名字空間)

    Namespace,不僅僅是一個屬性,本身也是一個object

    Namespace :用于將物理集群劃分為多個虛擬集群

    Namespace間完全隔離,因此也常被用來隔離不同的用戶(及權限)

    內置三個Namespaces: default、kube-system和kube-public,Node和PersistentVolume不屬于任何namespace


    Label(標簽)

    Label用于建立集群對象之間的靈活的、松耦合的多維關聯關系

    一個label是一個鍵-值對,其中的key、value均由用戶自己定義

    label可以附著在任何對象上,每個對象也可以有任意個標簽。標簽可在對象定義時附加上,也可以通過命令動態管理標簽

    Label可以將有組織目的的結構映射到集群對象上,從而形成一個與現實世界管理結構同步對應松耦合的、多維的對象管理結構

    http://img1.sycdn.imooc.com//6270cb2f0001034307350394.jpg

    Annotations(注解)

    Annotations :可以將任意非標識性元數據附加到對象上

    Annotations也是以鍵值對形式呈現

    ◆工具和庫可以檢索到并使用這些Annotations元數據

    將數據作為Annotation附著在對象上,有利于創建一些用于部署、管理和做內部檢查的共享工具或客戶端

    查看全部
  • Kubernetes對象

    Kubernetes對象∶是一種持久化的、用于表示集群狀態的實體

    —種聲明式的意圖的記錄,一般使用yaml文件描述對象

    Kubernetes集群使用Kubernetes對象來表示集群的狀態

    通過API/kubectl管理Kubernetes對象

    http://img1.sycdn.imooc.com//6270c99a00013d9a06400466.jpg

    查看全部
  • http://img1.sycdn.imooc.com//6270c70400012f0f06890423.jpg

    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

    http://img1.sycdn.imooc.com//6270c860000177cb07680356.jpg

    查看全部
    0 采集 收起 來源:Node組件

    2022-05-03

  • http://img1.sycdn.imooc.com//6270c4be000178e907240442.jpg

    邏輯控制中心

    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進行

    查看全部
    1 采集 收起 來源:Master組件

    2022-05-03

  • http://img1.sycdn.imooc.com//6270c46a0001a68509250577.jpg架構圖

    查看全部
  • http://img1.sycdn.imooc.com//626fa2fc0001311510470554.jpg

    http://img1.sycdn.imooc.com//626fa524000175af07190358.jpg

    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

    http://img1.sycdn.imooc.com//626fa82b00014ab208630205.jpg

    2.deployment部署

    hello-deployment文件

    http://img1.sycdn.imooc.com//626fa8670001030908360468.jpg

    http://img1.sycdn.imooc.com//626fa8d10001a39108750205.jpg

    http://img1.sycdn.imooc.com//626fa937000109e308600401.jpg

    http://img1.sycdn.imooc.com//626fa9450001d44408610138.jpg

    3.請求的自動負載均衡

    4.服務伸縮

    修改deployment文件的replicas

    http://img1.sycdn.imooc.com//626fa9cb0001c21708630073.jpg修改生效

    http://img1.sycdn.imooc.com//626fa9e90001add807170035.jpg日志

    5.服務版本升級與回退

    修改deployment文件版本

    監控pod升級過程:逐步替換

    http://img1.sycdn.imooc.com//626faa480001331408280160.jpg

    快速回滾上一版本:http://img1.sycdn.imooc.com//626faa8a0001dd1308640072.jpg

    查看全部
    0 采集 收起 來源:k8s集群初體驗

    2022-05-02

  • 容器編排管理平臺

    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

    原生支持微服務抽象︰服務注冊、服務發現和自動負載均衡

    查看全部
    0 采集 收起 來源:進一步了解k8s

    2022-05-02

  • Kubernetes是什么?

    Kubernetes是以Google內部容器編排管理平臺Borg為原型的開源實現

    一個容器編排管理平臺

    一個微服務支撐平臺

    一個可移植的“云平臺”

    查看全部
    0 采集 收起 來源:k8s是什么

    2022-05-02

  • http://img1.sycdn.imooc.com//626fa0220001c07c10210410.jpg1

    查看全部
    0 采集 收起 來源:本章小結

    2022-05-02

  • 1http://img1.sycdn.imooc.com//626f9fa60001dcbd09390482.jpg

    查看全部
  • 虛擬化在20世紀60年代被提出

    VMware虛擬機:提升計算機資源,降低使用成本

    亞馬遜開啟基礎設施即服務

    以虛擬化方式部署敏感,機密的服務

    平臺即服務 PaaS

    軟件即服務 SaaS


    容器化2013-至今

    docker:容器新時代

    與VM相比,容器具有開發交付流程操作對象同步、執行更為高效、資源占用更為集約等優勢。

    計算基本單元由虛擬機變為了容器,越來越多應用的構建、部署與運行選擇在容器中進行。


    云原生:初期2015-至今

    基礎前提︰應用的容器化和微服務化。容器,作為應用部署、運行和管理的基本單元;

    CNCF,Kubernetes : 2015年

    CNCF組織的成立為應用上云安全地采用云原生模式提供了更穩、更快、更安全的解決方案,其核心是Kubernetes。

    查看全部
  • 盛世嫡妃是的發送到飯

    查看全部
  • 地方所發生的事達搜索的發送到發的

    查看全部

舉報

0/150
提交
取消
課程須知
1、熟悉基本Linux操作 2、了解Docker容器概念與原理 3、了解基本docker命令操作
老師告訴你能學到什么?
1、Kubernetes是什么? 2、為什么要使用Kubernetes? Kubernetes給開發者帶來哪些好處? 3、如何在Kubernetes集群上部署和管理一個應用 4、Kubernetes的架構 5、Kubernetes的組件與功用 6、Kubernetes對象模型以及基礎概念

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!