인프런 커뮤니티 질문&답변

subscription님의 프로필 이미지
subscription

작성한 질문수

데브옵스(DevOps)를 위한 쿠버네티스 마스터

스테이트풀셋 실습

Statefullset 실습 질문입니다.

작성

·

185

0

안녕하세요.
 
실습을 따라하다 문제가 생겨 질문 남깁니다.
 
https://kubernetes.io/ko/docs/concepts/workloads/controllers/statefulset/
 
참고해서,
 
apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx # .spec.template.metadata.labels 와 일치해야 한다
  serviceName: "nginx"
  replicas: 3 # 기본값은 1
  minReadySeconds: 10 # 기본값은 0
  template:
    metadata:
      labels:
        app: nginx # .spec.selector.matchLabels 와 일치해야 한다
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx-slim:0.8
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "my-storage-class"
      resources:
        requests:
          storage: 1Gi

다음과 같이 작성해서 create 했는데,

 

 

$ kubectl describe pvc
Name:          www-web-0
Namespace:     default
StorageClass:
Status:        Pending
Volume:
Labels:        app=nginx
Annotations:   <none>
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
VolumeMode:    Filesystem
Used By:       web-0
Events:
  Type    Reason         Age                    From                         Message
  ----    ------         ----                   ----                         -------
  Normal  FailedBinding  4m23s (x242 over 64m)  persistentvolume-controller  no persistent volumes available for this claim and no storage class is set



describe pvc에서 Failed가 나옵니다..

 

에러 메세지를 찾아봐서 StorageClassName을 = "" 으로 수정해봤는데  같은 에러 메세지가 나오네요.

 

어디를 확인해봐야할까요?

 

감사합니다.

답변 2

0

subscription님의 프로필 이미지
subscription
질문자

현재 환경은 VM - ubuntu 20.04 에서 작업을 하고 있습니다

1. storage class는 https://rook.io/docs/rook/v1.8/quickstart.html 참고해서, rook을 설치했습니다.

$ kubectl get sc
NAME              PROVISIONER                  RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
rook-ceph-block   rook-ceph.rbd.csi.ceph.com   Delete          Immediate           true                   4h49m

storageClassName을 비워도 아예 안되는 문제가 있는데, 다시 확인해보니

2. ceph status 를 했을 때, hang이 걸리는 문제가 있습니다. 

/var/log/ceph 에도 별 다른 내용이 남지 않는데, 버전을 1.8.5에서 1.7로 다운 그레이드 해서 다시 시도해 보려고 합니다.

0

안녕하세요 강사 최일선입니다.

지금 보내주신 내용에서는 정보가 부족하여 답변드리기 어렵네요. 다음 명령으로 스토리지 클래스가 있는지 확인해보시기 바랍니다.  GCP에서 진행하시는 경우에는 스토리지 클래스가 있을 겁니다~

kubectl get sc

 

PVC 템플릿에 여기서 확인된 sc 이름을 입력하시거나 그 라인을 완전히 지우시면 기본 스토리지 클래스를 사용하게 됩니다.

storageClassName: "my-storage-class"

 

다시 한 번 시도해보시고 여전히 동작하지 않으시면 get sc 에 대한 결과와 현재 시스템에 대한 설명 추가로 말씀 부탁드리겠습니다.

감사합니다!

subscription님의 프로필 이미지
subscription

작성한 질문수

질문하기