작성
·
205
1
startupProbe의 실패기간을 성공기간보다 짧게 가져가기위해서
이렇게 변경해주었을때 위와같은 오류가 발생했습니다.
오류결과
successThreshold와 failureThreshold를 변경할 수 없다는 거 같습니다.
답변 3
1
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를 수정할때마다 이러한 오류가 발생합니다.
아..[쿠버네티스 대시보드 -> 파드 -> 편집 -> startupProbe] 이 내용을 보니 원인을 알겠네요.
제가 다른 일을 하면서 답변을 드리다 보니, 질문을 급하게 보고 좀 즉흥적으로 답변을 드린 것 같습니다. 그런 부분은 사과드리고요. 일단 Pod를 수정하시면 안됩니다. ^^ Deployment를 수정하셔야 되요.
그리고 답변 드린 내용을 정정하자면 startupProbe의 successThreshold 수치도 2로 변경 할 수 있습니다. 두 번 성공해야 잘 기동된 걸로 간주한다는 셈인거죠.
1
startupProbe가 한번이라도 응답이 오면 성공으로 간주.
즉, startupProbe의 failureThreshold를 successThreshold보다 짧은 기간(successThreshold가 1이니까 더 짧게)을 설정하는게 맞을까요?
그런데 저는 쿠버네티스 대시보드 -> 파드 -> 편집 -> startupProbe를 수정하면 저런 에러가 뜨더라구요.
Threshold는 기간이 아닌 횟수입니다.
그리고 startupProbe는 successThreshold이 1로 고정이기 때문에 한번이라도 성공 응답이 오면 App이 정상적으로 기동 됐다고 판단하는 거고요. 이 수치는 변경할 수가 없어요.
반면에 Application이 무거워서 기동 시간이 오래 걸린다면, failureThreshold의 수치가 작을 때 App이 무한 재기동 될 수 있기 때문에, failureThreshold를 늘려야 됩니다.
그래서 결국 startupProbe의 successThreshold이 1은 변경하면 안되는 수치가 되요.
만약 강의를 들으셨는데 아직 개념이 헷갈리시면, 한번 더 강의를 들어보시길 권해드릴께요.
아, 그리고 응용과제 1번은 startupProbe에서 failureThreshold의 수치만 낮추면 됩니다 :)
0
startupProbe은 한번만 성공하면 끝나는 속성입니다. 그렇기 때문에 success는 1 말고는 다른 값이 올 수가 없어요. 반면에 failure는 1로 변경할 수 있고요.
해당 속성을 변경하는 목적에 대해서 좀 더 상세하게 설명 가능할까요? "startupProbe의 실패기간을 성공기간보다 짧게 가져가기위해서"라는 게 어떤 의미인지 잘 이해가 안되서요.
아 혹시 쿠버네티스대시보드 에서
파드가아닌 디플로이먼트에서 수정해야하는 걸까요?