バージョン1.6.6を使用するGKEクラスタでKubernetesを実行し、1.6.4を持つ別のクラスタを実行しています。どちらもGCE計算ディスクのフェールオーバーに問題があります。ボリュームの取り付けに失敗しました
私は、コンテナ内のkill 1を使用して失敗をシミュレートしていたか、またはGCEノードを直接強制終了していました。時々私は幸運にも、同じノードでポッドが再び作成されることがあります。しかし、ほとんどの場合、これは当てはまりません。
イベントログを見ると、3回マウントしようとしてエラーが表示され、何も実行できません。人間の介入なしには、それは自己を決して矯正しません。私はそれが働くまで、ポッドを何度も殺さなければならない。保守の間、これは巨大な痛みです。
Kubernetesにボリュームを適切にフェールオーバーさせるにはどうすればよいですか?障害発生時に新しいノードを試すように展開するよう指示する方法はありますか? 3回の再試行制限を削除する方法はありますか?
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: dev-postgres
namespace: jolene
spec:
revisionHistoryLimit: 0
template:
metadata:
labels:
app: dev-postgres
namespace: jolene
spec:
containers:
- image: postgres:9.6-alpine
imagePullPolicy: IfNotPresent
name: dev-postgres
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres-data
env:
[ ** Removed, irrelevant environment variables ** ]
ports:
- containerPort: 5432
livenessProbe:
exec:
command:
- sh
- -c
- exec pg_isready
initialDelaySeconds: 30
timeoutSeconds: 5
failureThreshold: 6
readinessProbe:
exec:
command:
- sh
- -c
- exec pg_isready --host $POD_IP
initialDelaySeconds: 5
timeoutSeconds: 3
periodSeconds: 5
volumes:
- name: postgres-data
persistentVolumeClaim:
claimName: dev-jolene-postgres
私はこれをPersistentVolume/PersistentVolumeClaimの有無にかかわらず試しました。
apiVersion: "v1"
kind: "PersistentVolume"
metadata:
name: dev-jolene-postgres
spec:
capacity:
storage: "1Gi"
accessModes:
- "ReadWriteOnce"
claimRef:
namespace: jolene
name: dev-jolene-postgres
gcePersistentDisk:
fsType: "ext4"
pdName: "dev-jolene-postgres"
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: dev-jolene-postgres
namespace: jolene
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi