강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của whdgns62829214
whdgns62829214

câu hỏi đã được viết

Kubernetes Another Class - Sprint 1, 2 (#CơBảnThựcTế #CàiĐặt #TriểnKhai #Jenkins #Helm #ArgoCD)

📝 Cài đặt giám sát - Loki-Stack (💻 Bao gồm thực hành)

application 응용과제 1번

Viết

·

326

1

startupProbe의 실패기간을 성공기간보다 짧게 가져가기위해서

이렇게 변경해주었을때 위와같은 오류가 발생했습니다.

오류결과

successThreshold와 failureThreshold를 변경할 수 없다는 거 같습니다.

kubernetesinfrastructurecontainer

Câu trả lời 3

1

whdgns62829214님의 프로필 이미지
whdgns62829214
Người đặt câu hỏi

Internal server error

Pod "api-tester-1231-6f49f78859-qvmn8" is invalid: spec: Forbidden: pod updates may not change fields other than spec.containers[*].image,`spec.initContainers[*].image`,`spec.activeDeadlineSeconds`,`spec.tolerations` (only additions to existing tolerations),`spec.terminationGracePeriodSeconds` (allow it to be set to 1 if it was previously negative)   core.PodSpec{    Volumes: {{Name: "files", VolumeSource: {PersistentVolumeClaim: &{ClaimName: "api-tester-1231-files"}}}, {Name: "secret-datasource", VolumeSource: {Secret: &{SecretName: "api-tester-1231-postgresql", DefaultMode: &420}}}, {Name: "kube-api-access-zcbck", VolumeSource: {Projected: &{Sources: {{ServiceAccountToken: &{ExpirationSeconds: 3607, Path: "token"}}, {ConfigMap: &{LocalObjectReference: {Name: "kube-root-ca.crt"}, Items: {{Key: "ca.crt", Path: "ca.crt"}}}}, {DownwardAPI: &{Items: {{Path: "namespace", FieldRef: &{APIVersion: "v1", FieldPath: "metadata.namespace"}}}}}}, DefaultMode: &420}}}},    InitContainers: nil,    Containers: []core.Container{    {    ... // 12 identical fields    LivenessProbe: &{ProbeHandler: {HTTPGet: &{Path: "/liveness", Port: {IntVal: 8080}, Scheme: "HTTP"}}, TimeoutSeconds: 1, PeriodSeconds: 10, SuccessThreshold: 1, ...},    ReadinessProbe: &{ProbeHandler: {HTTPGet: &{Path: "/readiness", Port: {IntVal: 8080}, Scheme: "HTTP"}}, TimeoutSeconds: 1, PeriodSeconds: 10, SuccessThreshold: 1, ...},    StartupProbe: &core.Probe{    ... // 3 identical fields    PeriodSeconds: 5,    SuccessThreshold: 1, -  FailureThreshold: 5, +  FailureThreshold: 2,    TerminationGracePeriodSeconds: nil,    },    Lifecycle: nil,    TerminationMessagePath: "/dev/termination-log",    ... // 6 identical fields    },    },    EphemeralContainers: nil,    RestartPolicy: "Always",    ... // 28 identical fields   }

 

failureThreshold를 수정할때마다 이러한 오류가 발생합니다.


whdgns62829214님의 프로필 이미지
whdgns62829214
Người đặt câu hỏi

아 혹시 쿠버네티스대시보드 에서

파드가아닌 디플로이먼트에서 수정해야하는 걸까요?

1pro님의 프로필 이미지
1pro
Người chia sẻ kiến thức

아..[쿠버네티스 대시보드 -> 파드 -> 편집 -> startupProbe] 이 내용을 보니 원인을 알겠네요.

제가 다른 일을 하면서 답변을 드리다 보니, 질문을 급하게 보고 좀 즉흥적으로 답변을 드린 것 같습니다. 그런 부분은 사과드리고요. 일단 Pod를 수정하시면 안됩니다. ^^ Deployment를 수정하셔야 되요.

그리고 답변 드린 내용을 정정하자면 startupProbe의 successThreshold 수치도 2로 변경 할 수 있습니다. 두 번 성공해야 잘 기동된 걸로 간주한다는 셈인거죠.

 

 

1

whdgns62829214님의 프로필 이미지
whdgns62829214
Người đặt câu hỏi

startupProbe가 한번이라도 응답이 오면 성공으로 간주.

즉, startupProbe의 failureThreshold를 successThreshold보다 짧은 기간(successThreshold가 1이니까 더 짧게)을 설정하는게 맞을까요?

그런데 저는 쿠버네티스 대시보드 -> 파드 -> 편집 -> startupProbe를 수정하면 저런 에러가 뜨더라구요.

1pro님의 프로필 이미지
1pro
Người chia sẻ kiến thức

Threshold는 기간이 아닌 횟수입니다.

그리고 startupProbe는 successThreshold이 1로 고정이기 때문에 한번이라도 성공 응답이 오면 App이 정상적으로 기동 됐다고 판단하는 거고요. 이 수치는 변경할 수가 없어요.

반면에 Application이 무거워서 기동 시간이 오래 걸린다면, failureThreshold의 수치가 작을 때 App이 무한 재기동 될 수 있기 때문에, failureThreshold를 늘려야 됩니다.

그래서 결국 startupProbe의 successThreshold이 1은 변경하면 안되는 수치가 되요.

만약 강의를 들으셨는데 아직 개념이 헷갈리시면, 한번 더 강의를 들어보시길 권해드릴께요.

아, 그리고 응용과제 1번은 startupProbe에서 failureThreshold의 수치만 낮추면 됩니다 :)

0

1pro님의 프로필 이미지
1pro
Người chia sẻ kiến thức

startupProbe은 한번만 성공하면 끝나는 속성입니다. 그렇기 때문에 success는 1 말고는 다른 값이 올 수가 없어요. 반면에 failure는 1로 변경할 수 있고요.

해당 속성을 변경하는 목적에 대해서 좀 더 상세하게 설명 가능할까요? "startupProbe의 실패기간을 성공기간보다 짧게 가져가기위해서"라는 게 어떤 의미인지 잘 이해가 안되서요.

Hình ảnh hồ sơ của whdgns62829214
whdgns62829214

câu hỏi đã được viết

Đặt câu hỏi