k8s部署kafka集羣

1、概述html

在k8s裏面部署kafka、zookeeper這種有狀態的服務,不能使用deployment和RC,k8s提供了一種專門用來部署這種有狀態的服務的API--statefulset,有狀態簡單來講就是須要持久化數據,好比日誌、數據庫數據、服務狀態等。git

statefulset應用場景:github

  • 穩定的持久化存儲,即Pod從新調度後仍是能訪問到相同的持久化數據,基於PVC來實現
  • 穩定的網絡標誌,即Pod從新調度後其PodName和HostName不變,基於Headless Service(即沒有Cluster IP的Service)來實現
  • 有序部署,有序擴展,即Pod是有順序的,在部署或者擴展的時候要依據定義的順序依次依次進行(即從0到N-1,在下一個Pod運行以前全部以前的Pod必須都是Running和Ready狀態),基於init containers來實現
  • 有序收縮,有序刪除(即從N-1到0)

statefulset組成:數據庫

  • 用於定義網絡標誌(DNS domain)的Headless Service
  • 用於建立PersistentVolumes的volumeClaimTemplates
  • 定義具體應用的StatefulSet

StatefulSet中每一個Pod的DNS格式爲statefulSetName-{0..N-1}.serviceName.namespace.svc.cluster.local,其中 網絡

  • 0..N-1爲Pod所在的序號,從0開始到N-1
  • serviceName爲Headless Service的名字
  • statefulSetName爲StatefulSet的名字
  • namespace爲服務所在的namespace,Headless Servic和StatefulSet必須在相同的namespace
  • .cluster.local爲Cluster Domain

 

2、部署less

首先下載相關的部署文件:dom

git  clone  https://github.com/cuishuaigit/k8s-kafka.git

部署前須要提早準備nfs提供動態存儲,參考我以前的博客:https://www.cnblogs.com/cuishuai/p/9152277.htmlui

cd  k8s-kafka
kubectl create -f namesapce.yaml
kubectl create -f zk.yaml 

kubectl create
-f kafka.yaml

 

詳細信息參考:https://github.com/cuishuaigit/k8s-kafkaspa

相關文章
相關標籤/搜索