在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中部署Heketi和GlusterFS(二)
sta 自動創建 bdc ber ESS ddr ubunt cto cat kubernetes中部署Heketi和GlusterFS(二)在上一節中,Heketi的部署方式還不能用於生產環境,因為Heketi Pod的數據並沒有持久化,容易導致heketi的數據丟失,H
Kubernetes中部署Heketi和GlusterFS
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
部署GlusterFS及Heketi
一、前言及環境 在實踐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中私有化部署
應用錯誤跟蹤系統:對軟體系統執行過程中產生的錯誤日誌進行收集從而實現監控告警。 雖然軟體錯誤❌是不可避免的,但是可以降低錯誤數。 提高對錯誤的治理能力能讓錯誤帶來的損失降到最低