Kubernetes/2.Kubernetes基礎和部署說明

Kubernetes基礎和部署說明

本章節首先就基礎組件、集羣基礎對象和控制器進行了詳細的介紹和說明,而後辨析了集羣網絡中的三種網絡和專有名詞,最後關於新手部署測試和生產環境的部署要點進行了概括說明。前端

  • 基礎組件
  • 基礎對象(Objects)
  • 控制器
  • 集羣網絡
  • 部署要點
  • 備註

基礎組件

基礎組件

如圖所示,kubernetes集羣中主要分爲三個組件:node

Master Components

  • kube-apiserver:做爲k8s控制平面的前端,也是全部請求接收的入口
  • etcd:k8s集羣后端全部集羣數據的高可用k/v存儲數據庫
  • kube-scheduler:監聽變動請求,而後經過一系列filtering、scoring策略,調度pod運行
  • kube-controller-manager:一個獨立的進程,經過合解循環,將指望態和運行態保持一致
  • cloud-controller-manager:kubernetes與雲廠商提供的服務能力對接的關鍵組件。又稱kubernetes cloudprovider。 經過這個組件,可讓用戶在建立k8s LoadBalancer 類型的service的時候自動的爲用戶建立一個阿里雲SLB,同時動態的綁定與解綁SLB後端,而且提供了豐富的配置容許用戶自定義生成的LoadBalancer。

Node Components

  • kubelet:每一個node節點的k8s客戶端,用於確保pod的運行
  • kube-proxy:確保k8s服務間鏈接和轉發的組件
  • Container Runtime:運行容器的軟件,常見的有:Docker, rkt等

Addons(附加組件)

  • DNS: 經常使用的有CoreDNS
  • CNI (flannel, calico, ...) #網絡插件接口,咱們後面會講
  • Web UI (Dashboard)
  • Container Resource Monitoring
  • Cluster-level Logging
  • ...

基礎對象(Objects)

集羣對象

除了上面提到的基礎組件以外,kubernetes還提供了豐富的基礎對象(Objects),如:nginx

Pod、service、NameSpace和Volume

控制器

控制器

另外,kubernetes還包含了更高一層的抽象,稱之爲控制器(Controllers)。
控制器創建在基礎對象之上,並提供了額外、豐富且方便的功能,他們包括:git

ReplicaSet、Deployment、DaemonSet、StatefulSet、Job等

集羣網絡

如圖所示,kubernetes集羣可分爲三種網絡:節點網絡、Pod網絡和Service網路。github

node ip:
    配置在節點的網卡上

pod ip:
    配置在容器的虛擬網卡上

service ip(cluster ip):
    不進行配置,只存在於iptables和DNS的解析記錄中

部署要點

測試環境:
    可使用單Master節點,單etcd實例
    Node節點按需配置
    Nfs或glusterfs

生產環境:
    高可用etcd集羣(需按期備份),創建三、5或7個節點
    高可用Master:
        kube-apiserver無狀態,可多實例部署:
            藉助於Haproxy、nginx或keepalived進行vip流量實現多實例冗餘    
        kuber-scheduler和kuber-controller-manager:
            只能有一個活動實例,但能夠有多個備用(主備模式)

    多Node主機,數量越多,冗餘能力越強;
    Ceph、glusterfs、iSCSI、FC SAN及各類雲存儲等。

備註

本文原址位於個人Github,我會陸續將全部專題更新過來,其中包括docker、k8s、ceph、istio和prometheus,旨在分享雲原生中大而全的技術知識點和實操過程,若是對你有用,請follow、star個人github,這也是我更新、分享下去的動力,謝謝~docker

相關文章
相關標籤/搜索