kubernetesはステータスアプリケーションのzookeeperクラスタを配備する
5016 ワード
クラスタの配備中に発生したピット:
1 node(s) had taints that the pod didn't tolerate.
クラスタ内のノードが汚染されているので、ノード情報を表示すると、ノードの1つが起きていないため、2つのpodしか起動できません.
2 PVとPVCのピット zk.yamlでは3つのzookeeperを作成する必要があります.zookeeperクラスタの特性に基づいて、3つのzookeeperは3つの異なるデータディレクトリ(ログディレクトリを追加しても同じ)を必要とします.クラスタは正常になります. PVを作成するには、3つの異なるPV を作成する必要があります.はzkにあります.yamlでは、PVCをバックエンドの異なる3つのPVCに関連付ける必要があり、従来のPVCの作成に従ってzk.yamlではPVCの名前を指定し、1つの名前しか指定できません.これでは3つの異なるPVに関連付けることができません.volumeClaimTemplates(PVCテンプレート)が必要です.テンプレートaccessModesではReadWriteOnceが必要です.ReadWriteManyでは関連付けに失敗します. ダイナミックpvcで供給する場合も同様にPVCテンプレート を作成する必要がある.
3 zookeeper外部へのアクセス
zookeeperはstatefulSet配備を使用しているため、ヘッダレスサービスを使用していますが、外部へのアクセスを提供するとしたら?方法は、外部アクセス専用のサービスを追加することです.
具体的な配置
1 192.168.0.11にインストールnfsを作成し、nfsの起動を構成します.
2 nodeノードごとにnfsをダウンロードする
3 matserノードでzkで使用するPVを作成する
4 masterノード上にzookeeperのpodを作成するyamlファイル
公式文書を参照:https://kubernetes.io/docs/tutorials/stateful-application/zookeeper/https://kubernetes.io/docs/tutorials/stateful-application/zookeeper/
公式のドキュメントの中の鏡像の住所は国外の住所で、私はここでネット上で1つの利用可能な住所を探して、公式の鏡像と同じです
5クラスタステータスの表示
for i in 0 1 2; do kubectl exec zok-$i zkServer.sh status; done
6外部アクセスzookeeperクラスタ(ネイティブコンピュータを使用してアクセス)
1 node(s) had taints that the pod didn't tolerate.
クラスタ内のノードが汚染されているので、ノード情報を表示すると、ノードの1つが起きていないため、2つのpodしか起動できません.
2 PVとPVCのピット
volumeClaimTemplates:
- metadata:
name: datadir
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
3 zookeeper外部へのアクセス
zookeeperはstatefulSet配備を使用しているため、ヘッダレスサービスを使用していますが、外部へのアクセスを提供するとしたら?方法は、外部アクセス専用のサービスを追加することです.
具体的な配置
1 192.168.0.11にインストールnfsを作成し、nfsの起動を構成します.
2 nodeノードごとにnfsをダウンロードする
3 matserノードでzkで使用するPVを作成する
apiVersion: v1
kind: PersistentVolume
metadata:
name: zk-data1
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.0.11
path: /data/zk/data1
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: zk-data2
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.0.11
path: /data/zk/data2
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: zk-data3
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
nfs:
server: 192.168.0.11
path: /data/zk/data3
4 masterノード上にzookeeperのpodを作成するyamlファイル
公式文書を参照:https://kubernetes.io/docs/tutorials/stateful-application/zookeeper/https://kubernetes.io/docs/tutorials/stateful-application/zookeeper/
公式のドキュメントの中の鏡像の住所は国外の住所で、私はここでネット上で1つの利用可能な住所を探して、公式の鏡像と同じです
[root@localhost zk]# cat zk.yaml
apiVersion: v1
kind: Service
metadata:
name: zk-hs
labels:
app: zk
spec:
ports:
- port: 2888
name: server
- port: 3888
name: leader-election
clusterIP: None
selector:
app: zk
---
apiVersion: v1
kind: Service
metadata:
name: zk-cs
labels:
app: zk
spec:
type: NodePort
ports:
- port: 2181
targetPort: 2181
name: client
nodePort: 2181
selector:
app: zk
---
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: zk-pdb
spec:
selector:
matchLabels:
app: zk
maxUnavailable: 1
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: zok
spec:
serviceName: zk-hs
replicas: 3
selector:
matchLabels:
app: zk
template:
metadata:
labels:
app: zk
spec:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- zk
topologyKey: "kubernetes.io/hostname"
containers:
- name: kubernetes-zookeeper
imagePullPolicy: Always
image: leolee32/kubernetes-library:kubernetes-zookeeper1.0-3.4.10
resources:
requests:
memory: "1Gi"
cpu: "0.5"
ports:
- containerPort: 2181
name: client
- containerPort: 2888
name: server
- containerPort: 3888
name: leader-election
command:
- sh
- -c
- "start-zookeeper \
--servers=3 \
--data_dir=/var/lib/zookeeper/data \
--data_log_dir=/var/lib/zookeeper/data/log \
--conf_dir=/opt/zookeeper/conf \
--client_port=2181 \
--election_port=3888 \
--server_port=2888 \
--tick_time=2000 \
--init_limit=10 \
--sync_limit=5 \
--heap=512M \
--max_client_cnxns=60 \
--snap_retain_count=3 \
--purge_interval=12 \
--max_session_timeout=40000 \
--min_session_timeout=4000 \
--log_level=INFO"
readinessProbe:
exec:
command:
- sh
- -c
- "zookeeper-ready 2181"
initialDelaySeconds: 10
timeoutSeconds: 5
livenessProbe:
exec:
command:
- sh
- -c
- "zookeeper-ready 2181"
initialDelaySeconds: 10
timeoutSeconds: 5
volumeMounts:
- name: datadir
mountPath: /var/lib/zookeeper
volumeClaimTemplates:
- metadata:
name: datadir
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
5クラスタステータスの表示
for i in 0 1 2; do kubectl exec zok-$i zkServer.sh status; done
6外部アクセスzookeeperクラスタ(ネイティブコンピュータを使用してアクセス)