1. 程式人生 > >Pod在多可用區worker節點上的高可用部署

Pod在多可用區worker節點上的高可用部署

開發十年,就只剩下這套架構體系了! >>>   

一、      需求分析

當前kubernetes叢集中的worker節點可以支援新增多可用區中的ECS,這種部署方式的目的是可以讓一個應用的多個pod(至少兩個)能夠分佈在不同的可用區,起碼不能分佈在同一個可用區,已達到高可用或者同城災備的部署。

二、      效果圖

三、      實現原理

為了實現上述的效果,kubernetes提供了pod的親和性和反親和性來保證pod在節點級別,可用區級別的高可用部署;具體的值為topologyKey:failure-domain.beta.kubernetes.io/zone。

四、      實現步驟

在ACK上建立完集群后,不論從哪個可用區新增節點,都會對該節點打上對應的可用區標籤,比如,一個節點是屬於北京可用區a的,那麼在加入到kubernetes集群后,該節點上會有一個這樣的標籤:failure-domain.beta.kubernetes.io/zone: cn-beijing-a。

在有了上述標籤後,對應用進行多可用區部署時,我們就可以使用一下yaml檔案來使不同的pod分配到不同的可用區。

     Yaml檔案示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-cache
spec:
  selector:
    matchLabels:
      app: store
  replicas: 3
  template:
    metadata:
      labels:
        app: store
    spec:
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchExpressions:
              - key: app
                operator: In
                values:
                - store
            topologyKey: "failure-domain.beta.kubernetes.io/zone"
      containers:
      - name: redis-server
        image: redis:3.2-alpine

上面yaml檔案中的podAntiAffinity:部分規定了node的反親和性,並且由於使用了topologyKey: "failure-domain.beta.kubernetes.io/zone",如果failure-domain.beta.kubernetes.io/zone這個key有三種value,比如cn-beijing-a,cn-beijing-b,cn-beijing-c;那麼pod會被分配在這三個不同的可用區。並且由於使用了preferredDuringSchedulingIgnoredDuringExecution,所以如果pod個數大於可用區個數的話,pod會盡可能的放在不同的可用區,最後會出現多出來的pod會與原有pod在同一個可用區。

上面的使用方式還有很多種,包括node級別的,詳細請參考:https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity

五、      注意問題(雲盤)

    由於雲盤不能跨可用區掛載,如果有pod使用了儲存卷,該pod需要被排程到與儲存卷相同的可用區的機器上。

    其他儲存卷比如NAS,OSS是可以採用上述部署方式的。

相關推薦

Pod可用worker節點可用部署

開發十年,就只剩下這套架構體系了! >>>   

二、k8s1.12 master節點可用

架構圖 master 節點我們要避免單節點,防止故障 1、多節點部署 我們在192.168.1.9上面部署另外一臺master 首先我們將主節點檔案拷貝過去: cd /opt scp -r kubernetes 192.168.1.9:/opt/ scp -r

Kubernetes master節點可用配置

names iclient family each [0 refresh srv echo let 了解Kubernetes架構都知道Master節點在整個集群中的位置,為了保證整個架構的高可用,Kubernetes提供了HA的架構,處於興趣和對架構的進一步了解,我在自

詳解 MySQL 可用群集,MMM搭建可用

cti 主從復制 防火墻 操作系統 oracl pat -- utf8 set 目錄: 1·MMM 簡介2·MMM 各個角色說明3·案例環境介紹4·案例實施5·總結 一:MMM 簡介: 1)MMM 是什麽:說得簡單點,就是 MySQL 主主復制的管理器。之前的一篇文

SQL Server中的可用性(1)----可用性概覽

    自從SQL Server 2005以來,微軟已經提供了多種高可用性技術來減少宕機時間和增加對業務資料的保護,而隨著SQL Server 2008,SQL Server 2008 R2,SQL Server 2012的不斷髮布,SQL Server中已經存在了滿足不同場景的多種高可用性技術。    

Hadoop2.7.2可用(HA)環境下Hbase可用(HA)環境的搭建(在Ubuntu14.04下以root使用者進行配置)

Hadoop2.7.2高可用(HA)環境下Hbase高可用(HA)環境的搭建 轉載請註明出處:http://blog.csdn.net/qq_23181841/article/details/75095370 (在Ubuntu14.04下以root使用者進行配置) 下載

主題:分散式架構可用架構_Keepalived+Nginx實現可用Web負載均衡

一、場景需求 二、Keepalived 簡要介紹 Keepalived 是一種高效能的伺服器高可用或熱備解決方案,Keepalived 可以用來防止伺服器單點故障的發生,通過配合 Nginx 可以實現 web 前端服務的高可用。 Keepalived 以 VRRP

節點可用Eureka叢集配置與部署

前言 上一節講的是動態擴容Eureka服務,說實話,一般情況這種操作並不多,一般多用在,由於大量服務節點部署後給Eureka造成壓力突然積增,而解決的辦法。這節講的是一次啟動或部署,直接就是叢集多節點的,多用於服務節點相對穩定的場景。還有筆者這裡有實際部署和應用的經驗分享給大家,就是,我目前25

Mysql 可用 InnoDB Cluster 節點搭建過程

1. 簡介 InnoDB Cluster 的搭建可以分為兩種情況: (1)實驗環境 使用 sandbox 沙箱模擬資料庫例項,這個非常簡單,可以參考之前的一篇文章《體驗 MySQL InnoDB Cluster》,也可以看 mysql 的官方文件,其中就是使用 sandbox 來介紹搭建

可用Eureka Server (節點註冊中心)

eureka server 配置檔案 spring: application: name: discovery-eureka server: port: 8761 eureka: instance: hostName: localhost c

spark分數,task數目,core數,worker節點個數,excutor數量梳理

span 技術分享 註意 mat utf jpg input lin part 作者:王燚光鏈接:https://www.zhihu.com/question/33270495/answer/93424104來源:知乎著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載

kafka 分和副本以及kafaka 執行流程,以及消息的可用

是否存活 發送消息 分布 top 自己的 .net sink 端口號 本地 1、Kafka概覽 Apache下的項目Kafka(卡夫卡)是一個分布式流處理平臺,它的流行是因為卡夫卡系統的設計和操作簡單,能充分利用磁盤的順序讀寫特性。kafka每秒鐘能有百萬條消息的吞吐量,因

可用的Spring FTP傳下載工具類(已解決傳過程常見問題)

關於 package 輸入 .net rop inpu pasv for factory 前言 最近在項目中需要和ftp服務器進行交互,在網上找了一下關於ftp上傳下載的工具類,大致有兩種。   第一種是單例模式的類。   第二種是另外定義一個Service,直接通過

可用性能分布式文件系統FastDFS進階keepalived+nginx對tracker進行

type module chmod def expire 空間 根據 權限 原理 在上一篇 分布式文件系統FastDFS如何做到高可用 中已經介紹了FastDFS的原理和怎麽搭建一個簡單的高可用的分布式文件系統及怎麽訪問。  高可用是實現了,但由於我們只設置了一個group

heartbeat可用原理詳解(

heartbeat linux 1.heartbeat的作用 通過heartbeat,可以將資源(IP及程序服務等資源)從一臺已經故障的計算機快速轉移到另一臺正常運轉的機器上繼續提供服務,一般稱之為高可用服務。在實際生產中mkeepalived有很多相同之處。在生產實際的業務應用也是有區別的

在Kubernetes運行可用的WordPress和MySQL

WordPress MySQL Kubernetes WordPress是用於編輯和發布Web內容的主流平臺。在本教程中,我將逐步介紹如何使用Kubernetes來構建高可用性(HA)WordPress部署。WordPress由兩個主要組件組成:WordPress PHP服務器和用於存儲用戶信息、

Azure技術12-可用--在Azure創建典型可用架構應用(2)

公有雲 azure PHP mysql 高可用 下面創建虛擬機,我們分別創建兩臺Windows2012 的虛擬機吧,這裏填入虛擬機名,磁盤類型(這裏就比以前老門戶方便多了,以前要創建SSD還需要powershell,見我寫的博客Azure技術08-虛擬機-創建高性能存儲,創建DS系列虛擬機

Azure技術12-可用--在Azure創建典型可用架構應用(1)

公有雲 高可用 mysql azure PHP 在上篇文章中我說了我會結合IaaS與雲端PaaS,本次我將在Azure上部署一個最簡單最常規的高可用架構,雲端產品主要包含,PaaS層采用Azure Database for MYSQL作為數據庫後端服務器,部署兩臺Windows虛擬機做前端

Azure技術12-可用--在Azure創建典型可用架構應用(3)

azure php mysql 負載平衡器 高可用 等待安裝完成將PHPBB的文件夾中的數據復制到相應的目錄中,我這裏為了方便直接放到了wwwroot文件夾中,就不需要另外建網站,直接用默認網站然後我們展開至Install文件夾,找到index.html瀏覽來安裝PHPBB論壇根據提示一步

Win2012R2 Hyper-V之17 配置Hyper-V群集可用

雲計算 虛擬化 在前面的章節中我們已經完成對於常規故障服務器的一些處理方法,即保存副本等,那如果我們需要實現高可用性怎麽辦了?即當這臺服務器性能不足或非常規宕機的時候,能夠無縫的自動實時遷移對應的虛擬服務器,以保證業務的24小時無間斷。這就是我們今天的重點Hyper-V服務器群集高可用