kubernetes의 상태를 이용하여 고장 방지 강력한pod ② 세트 제작
16292 단어 초학자Kubernetesidea
개시하다
그를 쓰러뜨리기 위해 이번에는kubernetes의 상태를 활용해 고장 방지가 강한pod를 만드는 방법을 조사했다!(^^)/
개요
■ 테스트 환경
■하고 싶은 것
■ 선언문 작성
■ 상태 전체 세트를 삭제해도 영구 암호화 볼륨이 유지되는지 확인
요약(^^)/
■ 테스트 환경
이번에는 미니쿠버가 로컬(Windows)에 설치되었습니다.
테스트해 봤어!
↑ 참고로 이곳에 환경을 만들었습니다(^^)/
■하고 싶은 일
이번에 상태 전체 MySQL 서버를 이용하여 통합된pod와 몇 개의 지속량을 구축하여 데이터가 보호되었는지 확인하였다.
■ 선언문 작성
참조↑.
전체 상태 사용 시 피쳐
① ClusterIP: None, 헤드 없음 모드 사용
② 서비스Name: 모든 합작의 상태를 기술하는 서비스 이름
③ template: 마운트 지점 지정
④ voluumeClaim Templates: 복제품 수량만 설정하면 영구 볼륨으로 설정
① 헤드 없는 서비스를 시작한다.
① ClusterIP: None, 헤드 없음 모드 사용
무두 서비스를 사용하지 않으면 상태 전체를 사용할 수 없기 때문에 서비스 선언을 작성한다.헤드 없는 서비스를 제공하기 위해 "cluster IP:None"으로 설정합니다.
mysql-services.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
app: mysql-sts
spec:
ports:
- name: mysql
port: 3306
clusterIP: None
selector:
app: mysql-sts
설정된 서비스를 시작합니다.$ kubectl apply -f .\mysql-services.yaml
service/mysql created
② 복제본이 있는 상태 전체 세트를 시작합니다.
statefulSet.yml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql
spec:
selector:
matchLabels:
app: mysql-sts # serviceのラベルと一致させること
serviceName: mysql # serviceNameを指定すること
replicas: 3 # レプリカ数の設定で連動する永続ボリュームも作成される
template: # podテンプレート
metadata:
labels:
app: mysql-sts # serviceのラベルと一致させること
spec:
containers:
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
value: qwerty
ports:
- name: mysql
containerPort: 3306
volumeMounts: # マウントポイントを指定すること
- name: pvc
mountPath: /var/lib/mysql
subPath: data
resources:
requests:
cpu: 500m
memory: 1Gi
livenessProbe: #Mysql稼働チェック
exec:
command: ["mysqladmin", "ping"]
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
volumeClaimTemplates: # 永続ボリューム要求テンプレート
- metadata:
name: pvc
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
전체 상태 세트 시작$ kubectl apply -f .\statefulSet.yml statefulset.apps/mysql created
서비스, 상태 전체 집합,pod, PVC와 PV를 만들었는지 확인합니다.$ kubectl get svc # service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d16h
mysql ClusterIP None <none> 3306/TCP 3d15h
$ kubectl get sts # ステートフルセット NAME READY AGE
mysql 3/3 2m3s
$ kubectl get po # pod NAME READY STATUS RESTARTS AGE
mysql-0 1/1 Running 0 2m17s
mysql-1 1/1 Running 0 85s
mysql-2 1/1 Running 0 78s
$ kubectl get pvc # 永続ボリューム要求 NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-mysql-0 Bound pvc-31e68565-a134-4143-8f26-fd7e0ce6e0d8 10Gi RWO standard 2m38s
pvc-mysql-1 Bound pvc-e0455e8e-26a1-4db2-8e5f-c63340474e74 10Gi RWO standard 106s
pvc-mysql-2 Bound pvc-1ef1292c-5d21-46db-8665-64b8783ac656 10Gi RWO standard 99s
$ kubectl get pv # 永続ボリューム NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-1ef1292c-5d21-46db-8665-64b8783ac656 10Gi RWO Delete Bound default/pvc-mysql-2 standard 104s
pvc-31e68565-a134-4143-8f26-fd7e0ce6e0d8 10Gi RWO Delete Bound default/pvc-mysql-0 standard 2m43s
pvc-e0455e8e-26a1-4db2-8e5f-c63340474e74 10Gi RWO Delete Bound default/pvc-mysql-1 standard 111s
■ 상태 전체 세트를 삭제해도 영구 암호화 볼륨이 유지되는지 확인
① mySQL 서버에 쓰기
자세에 들어간다
kubectl exec -it mysql-0 bash ``` ```
```^^:書き込みをする
root@mysql-0:/# mysql -u root -pqwerty
mysql> create database hello;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hello | ←入れた
| mysql |
| performance_schemsa |
| sys |
+--------------------+
5 rows in set (0.00 sec)
exit(podをでる)
② 상태 전체 세트, 서비스 삭제
$ kubectl.exe delete -f statefulSet.yml statefulset.apps "mysql" deleted
$ kubectl.exe delete -f mysql-services.yaml service "mysql" deleted
③ 남은 것 확인
서비스, 상태 전체 집합,pod를 삭제했는지 확인하십시오.
$ kubectl get svc,sts,po NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d17h
# 削除されている
지속 볼륨 요청 및 지속 볼륨이 남아 있는지 확인합니다.$ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc-mysql-0 Bound pvc-31e68565-a134-4143-8f26-fd7e0ce6e0d8 10Gi RWO standard 52m
pvc-mysql-1 Bound pvc-e0455e8e-26a1-4db2-8e5f-c63340474e74 10Gi RWO standard 51m
pvc-mysql-2 Bound pvc-1ef1292c-5d21-46db-8665-64b8783ac656 10Gi RWO standard 51m
$ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-1ef1292c-5d21-46db-8665-64b8783ac656 10Gi RWO Delete Bound default/pvc-mysql-2 standard 51m
pvc-31e68565-a134-4143-8f26-fd7e0ce6e0d8 10Gi RWO Delete Bound default/pvc-mysql-0 standard 52m
pvc-e0455e8e-26a1-4db2-8e5f-c63340474e74 10Gi RWO Delete Bound default/pvc-mysql-1 standard 52m
④ MySql-0 Pord가 영구 볼륨을 상속받았는지 확인합니다.
서비스 재배치 상태 전체 집합
$ kubectl apply -f .\mysql-services.yaml service/mysql created
$ kubectl apply -f .\statefulSet.yml statefulset.apps/mysql created
확인.$ kubectl get svc,sts,po NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d17h
service/mysql ClusterIP None <none> 3306/TCP 64s
NAME READY AGE
statefulset.apps/mysql 3/3 51s
NAME READY STATUS RESTARTS AGE
pod/mysql-0 1/1 Running 0 51s
pod/mysql-1 1/1 Running 0 46s
pod/mysql-2 1/1 Running 0 44s
아까 mysql-0의pod에 들어가기$ kubectl exec -it mysql-0 bash
방금 한 내용이 살아 있는지 확인하세요.root@mysql-0:/# mysql -u root -pqwerty
略
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hello | ←いた
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
그나저나 다른pod는?$ kubectl exec -it mysql-1 bash
---
root@mysql-1:/# mysql -u root -pqwerty
略
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
독립된 지속량이 있는 것 같다(^^)/총결산
와--!
Reference
이 문제에 관하여(kubernetes의 상태를 이용하여 고장 방지 강력한pod ② 세트 제작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/suiudou/articles/1e000d1f57c695텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)