1. 程式人生 > >在Kubernetes中部署GlusterFS+Heketi

在Kubernetes中部署GlusterFS+Heketi

目錄

簡介

然而,因為Heketi無法叢集部署,所以這種部署方式中,Heketi是一個單點。要儘可能的消除這個單點,一種方式是直接將Heketi部署到Kubernetes叢集,複用Deployment的特性來確保heketi容器可用。

Gluster-Kubernetes

其實如果想直接將heketi和glusterfs直接部署到kubernetes中,已經有開源軟體幫我們做了這些事情。這就是gluster-kuberntes專案。

但是我們這篇文件並不打算展開來說Gluster-Kubernetes專案,如果對該專案有興趣,可以自行查閱相關文件。本篇文件將通過手動在kubernetes叢集中部署一個Glusterfs+Heketi來展示其是如何在kubernetes中執行的。

部署

環境準備

主機名 系統 ip地址 角色
ops-k8s-175 ubuntu16.04 192.168.75.175 k8s-node,glusterfs
ops-k8s-176 ubuntu16.04 192.168.75.176 k8s-node,glusterfs
ops-k8s-177 ubuntu16.04 192.168.75.177 k8s-node,glusterfs
ops-k8s-178 ubuntu16.04 192.168.175.178 k8s-node,glusterfs

下載相關檔案

我們可以直接將其全部下載到本地:

wget https://raw.githubusercontent.com/heketi/heketi/master/extras/kubernetes/glusterfs-daemonset.json
wget https://raw.githubusercontent.com/heketi/heketi/master/extras/kubernetes/heketi-bootstrap.json
wget https://raw.githubusercontent.com/heketi/heketi/master/extras/kubernetes/heketi-deployment.json
wget https://raw.githubusercontent.com/heketi/heketi/master/extras/kubernetes/heketi-service-account.json
wget https://raw.githubusercontent.com/heketi/heketi/master/extras/kubernetes/heketi-start.sh
wget https://raw.githubusercontent.com/heketi/heketi/master/extras/kubernetes/heketi.json
wget https://raw.githubusercontent.com/heketi/heketi/master/extras/kubernetes/topology-sample.json

部署glusterfs

在上面下載的檔案中,glusterfs-daemonset.json就是用於部署glusterfs的配置檔案,將glusterfs作為daemonset的方式執行。可以通過將指定stoargenode=glusterfs標籤來選擇用於部署glusterfs的節點:

kubectl label node 192.168.75.175 storagenode=glusterfs
kubectl label node 192.168.75.176 storagenode=glusterfs
kubectl label node 192.168.75.177 storagenode=glusterfs
kubectl label node 192.168.75.178 storagenode=glusterfs

修改glusterfs-daemonset.json使用的image為gluster/gluster-centos:gluster4u0_centos7,然後執行該json檔案:

kubectl create -f glusterfs-daemonset.json

即可完成glusterfs部署

部署heketi server端

部署heketi之前,需要先為heketi建立serviceaccount:

kubectl create -f heketi-service-account.json

然後為該serviceaccount授權,為其繫結相應的許可權來控制gluster的pod,執行如下操作:

kubectl create clusterrolebinding heketi-gluster-admin --clusterrole=edit --serviceaccount=default:heketi-service-account

接著,建立一個Kubernetes secret來儲存我們Heketi例項的配置。必須將配置檔案的執行程式設定為 kubernetes才能讓Heketi server控制gluster pod。

heketi.json的配置修改如下:

......
#開啟認證
  "use_auth": true,
......
#修改admin使用者的key
      "key": "adminkey"
......
#修改執行外掛為kubernetes
    "executor": "kubernetes",
......
#備份heketi資料庫
    "backup_db_to_kube_secret": true

執行如下操作,將heketi.json建立為kubernetes的secret:

kubectl create secret generic heketi-config-secret --from-file=./heketi.json

接著部署heketi的執行容器,配置檔案為heketi-bootstrap.json,需要修改image為heketi/heketi:7

kubectl create -f heketi-bootstrap.json

通過建立ingress的方式將heketi暴露出來:

# cat heketi.ingress.yaml 
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: traefik
  name: heketi
spec:
  rules:
  - host: heketi.breezey.io
    http:
      paths:
      - path: /
        backend:
          serviceName: deploy-heketi
          servicePort: 8080
          
          
# kubectl create -f hekti.ingress.yaml

至此,完成heketi server端部署

配置heketi client

需要說明的是,heketi的客戶端版本需要與server端對應,server端我們使用的是7.0,所以客戶端也需要下載7.0版本:

wget https://github.com/heketi/heketi/releases/download/v7.0.0/heketi-client-v7.0.0.linux.amd64.tar.gz

修改topology-sample.json檔案,如下:

{
    "clusters": [
        {
            "nodes": [
                {
                    "node": {
                        "hostnames": {
                            "manage": [
                                "192.168.75.175"
                            ],
                            "storage": [
                                "192.168.75.175"
                            ]
                        },
                        "zone": 1
                    },
                    "devices": [
                        "/dev/vda2"
                    ]
                },
                {
                    "node": {
                        "hostnames": {
                            "manage": [
                                "192.168.75.176"
                            ],
                            "storage": [
                                "192.168.75.176"
                            ]
                        },
                        "zone": 1
                    },
                    "devices": [
                        "/dev/vda2"
                    ]
                },
                {
                    "node": {
                        "hostnames": {
                            "manage": [
                                "192.168.75.177"
                            ],
                            "storage": [
                                "192.168.75.177"
                            ]
                        },
                        "zone": 1
                    },
                    "devices": [
                        "/dev/vda2"
                    ]
                },
                {
                    "node": {
                        "hostnames": {
                            "manage": [
                                "192.168.75.178"
                            ],
                            "storage": [
                                "192.168.75.178"
                            ]
                        },
                        "zone": 1
                    },
                    "devices": [
                        "/dev/vda2"
                    ]
                }               
            ]
        }
    ]
}

建立叢集:

heketi-cli  topology load --json topology-sample.json

相關推薦

Kubernetes部署GlusterFS+Heketi

目錄 簡介 然而,因為Heketi無法叢集部署,所以這種部署方式中,Heketi是一個單點。要儘可能的消除這個單點,一種方式是直接將Heketi部署到Kubernetes叢集,複用Deployment的特性來確保heketi容器可用。 Gluster-Kubernetes 其實如果想直接將heketi和g

kubernetes部署HeketiGlusterFS(二)

sta 自動創建 bdc ber ESS ddr ubunt cto cat kubernetes中部署Heketi和GlusterFS(二)在上一節中,Heketi的部署方式還不能用於生產環境,因為Heketi Pod的數據並沒有持久化,容易導致heketi的數據丟失,H

Kubernetes部署HeketiGlusterFS

issue 服務 p地址 following 節點 tidb fuse led 安裝 Kubernetes中部署Heketi和GlusterFS [TOC] 1. 前言 在Kubernetes中,使用GlusterFS文件系統,操作步驟通常是: 創建brick--&g

獨立部署GlusterFS+Heketi實現Kubernetes共享儲存

目錄 環境 主機名 系統 ip地址 角色 ops-k8s-175 ubuntu16.04 192.168.75.175 k8s-master,glusterfs,heketi ops-k8s-176 ubuntu16.04 192.168.75.176 k8s-node,glusterfs

Kubernetes掛載GlusterFS的volume

這裡採用最簡單的方法,掛載宿主系統的GlusterFS卷給Kubernetes中的pod使用。 1、安裝GlusterFS Kubernetes可以直接掛載多種檔案系統,其中包括GlusterFS(https://kubernetes.io/docs/concepts/storage/

如何在Kubernetes部署一個高可用的PostgreSQL叢集環境_Kubernetes中文社群

【編者的話】本文主要介紹瞭如何在Kubernetes環境中用Stolon去部署高可用的PostgreSQL,本文從Stolon的結構組成開始,由淺入深介紹原理,從開始安裝到最後對其進行failover測試,深入淺出,為以後部署高可用的PostgreSQL提供了一種的解決方案。 建立一個高可用

概念驗證:在Kubernetes部署ABAP

關於將SAP ABAP應用伺服器元件容器化和在Kubernetes中部署它們,我們在SPA LinuxLab中做了概念驗證(PoC),本文將介紹一些我們的發現和經驗。本文會也會指出這項工作的一些潛在的收益和挑戰。   作者:Richard Treu, Henning Sackewitz 英文原文:P

Kubernetes入門(四)——如何在Kubernetes部署一個可對外服務的Tensorflow機器學習模型

機器學習模型常用Docker部署,而如何對Docker部署的模型進行管理呢?工業界的解決方案是使用Kubernetes來管理、編排容器。Kubernetes的理論知識不是本文討論的重點,這裡不再贅述,有關Kubernetes的優點讀者可自行Google。筆者整理的Kubernetes入門系列的側重點是如何實操

kubernetes集群部署mysql主從

-c git node watermark fff tar 配置連接 top c-s 本文介紹在kubernetes環境中部署mysql主從集群,數據持久化采用nfs。 一、環境介紹Mysql版本:5.7 Mysql master節點: 主機名:vm1IP地址:192.16

kubernetes集群部署php應用

支持 gis serve php-fpm nginx配置 map metadata dfa aml 本文將介紹在kubernetes環境中部署一套php應用系統。前端web采用nginx、中間件php以fastcgi的方式運行,後臺數據庫由mysql主從提供支撐。各服務組件

glusterfs + heketi實現kubernetes的共享存儲

文件 zone 進行 .html directory key hosts amd64 dma [toc] 環境 主機名 系統 ip地址 角色 ops-k8s-175 ubuntu16.04 192.168.75.175 k8s-master,glusterfs

kubernetes DNS的安裝部署測試

rgs sid proto args GC con target iat 通信 [toc] 安裝DNS後,pod就可以通過dns來解析service,從而實現通信 kubernetes 版本: kubectl version 我當前的版本是1.9.0

Kubernetes使用Sateful Set部署Redis_Kubernetes中文社群

面寫過過幾篇關於在Kubernetes上執行有狀態服務相關的博文: 最近需要在我們的一個Kubernetes叢集上部署Redis,因此重新整理,寫一下如何在Kubernetes上使用Sateful Set部署Redis。 1.需求和環境 我們的需求是需要部署三節點的Redis主從複製,並部署

Kubernetes叢集部署Heapster_Kubernetes中文社群

背景 公司的容器雲平臺需要新增應用的自動擴縮容的功能,以便能夠更加智慧化的對應用進行管理。 Kubernetes官方提供了HPA(Horizontal Pod Autoscaling)資源物件。要讓我們部署的應用做到自動的水平的(水平指的是增減Pod副本數量)進行擴縮容,我們只需要在Kuber

部署GlusterFSHeketi

一、前言及環境 在實踐kubernetes的StateFulSet及各種需要持久儲存的元件和功能時,通常會用到pv的動態供給,這就需要用到支援此類功能的儲存系統了。在各類支援pv動態供給的儲存系統中,GlusterFS的設定比較簡單,且資料安全性比較有保障,相較於ceph和NFS。 環境(g

Alibaba Cloud Toolkit 本地應用程式一鍵部署到線下自有 VM,或阿里雲 ECS、EDAS、Kubernetes

Alibaba Cloud Toolkit Alibaba Cloud Toolkit( 阿里雲開發者外掛,簡稱:Cloud Toolkit )是一個面向 IntelliJ IDEA、Eclipse 和 Maven 平臺的免費外掛,旨在幫助開發者在本地開發平臺(IDE)中更便捷的

關於 Kubernetes 的 Volume 與 GlusterFS 分散式儲存

容器中持久化的檔案生命週期是短暫的,如果容器中程式崩潰宕機,kubelet 就會重新啟動,容器中的檔案將會丟失,所以對於有狀態的應用容器中持久化儲存是至關重要的一個環節;另外很多時候一個 Pod 中可能包含多個 Docker 映象,在 Pod 內資料也需要相互共享,Kubernetes  中 Pod 也可以增

SpringCloud | Docker 學習系列 | Kubernetes 學習 將SpringCloud Eureka 服務註冊與發現部署到docker並放入到Kubernetes管理

一、前言      很早之前就想寫這篇文章,終於有點時間來填坑了。之前都是在公司伺服器上搭建的,這次在自己的電腦上搭建好了環境,再來完善這篇部落格。二、環境準備     此次環境已經搭建完畢     kubernetes  v1.9.0     docker 17.03.2-

Kubernetes叢集部署dashboard

部署 dashboard 外掛 下載k8s後的解壓縮目錄結構:kubernetes/cluster/addons/dashboard 使用的檔案: $ ls *.yaml dashboard-controller.yaml dashboard-rba

Sentry實時應用錯誤跟蹤系統在Kubernetes私有化部署

應用錯誤跟蹤系統:對軟體系統執行過程中產生的錯誤日誌進行收集從而實現監控告警。 雖然軟體錯誤❌是不可避免的,但是可以降低錯誤數。 提高對錯誤的治理能力能讓錯誤帶來的損失降到最低 ​