블로그
전체 10#태그
- 일프로
- 쿠버네티스
- 러닝업클럽
- 지상편
- 워밍업클럽
- 일프로강사님
2025. 06. 24.
1
Image 변경 내용을 Github로 Push, ArgoCD로 자동 배포 흐름 [미션6]
1. ArgoCD로 App 생성 및 배포 - 2232-build-push-git1-1. App 생성 하기1-2. 자동 배포 설정 - api-tester-2232-build-push-git > details > SYNC POLICY1-3. 자동 배포 확인 - ArgoCD 상태 및 Dashboard Pod 생성 유무2. Jenkins에 Github Token 등록2-1. Github에서 Credential 확인2-2. Jenkins에 Credential 등록 2-3. Jekninsfile 에서 Credential 사용 확인 3. Jeknins에서 Source/Container 빌드 후 Docker로 업로드 하기 3-4.[파라미터와 함께 빌드] 선택 후 본인의 DockerHub와 Github의 Username 입력 후 [빌드] 실행 docker 부분에서 권한 에러 나는건 해결했는데 git 부분에서 에러 나는건 해결이 안 되는중 ...==> 토큰 값을 줬어야 하는데 github 비밀번호를 입력했던 저의 휴먼에러 였습니다 ,,!! 3-5.Stage View결과 확인 3-6. ArgoCD에서 자동 배포 확인3-7. 다시 빌드 후 재확인 ==> 변경된 이미지로 생성된 pod 생성 확인
일프로
・
쿠버네티스
・
러닝업클럽
2025. 06. 22.
1
쿠버네티스 어나더 클래스(지상편)-인프런 일프로강사님 / 4주차 발자국
강의 수강일주일간 학습한 내용Helm과 Kustomize 비교하며 사용하기 - 패키지 구조 비교 및 Kustomize 배포이번 강의에서는 쿠버네티스 패키지 매니저인 Kustomize에 대해 배우며 Helm과 비교하는 시간을 가졌습니다. kustomize가 확실히 간편하고 쉽게 배포할 수 있기는 한 것 같습니다. 물론 helm에 비해 환경별로 세세하게 제어할 수는 없어보이긴 하지만 ..?ArgoCD 빠르게 레벨업 하기Jenkins Pipeline과 비교해 배포가 간단했던 것 같습니다.각 파이프 마다 이동해서 확인하는 Jenkins에 비해 ArgoCD는 실시간으로 Pod 로그도 볼 수 있어서 보다 편리했습니다. 도커 이미지의 태그가 달라지는 것을 자동으로 감지시켜 주어 동기화를 시켜줄 수 있고 깃과 동일한 환경을 구축할 수 있게 되는 옵션도 배웠습니다.CLI를 사용해 쉽게 배포 모니터링도 가능했고 Argo Rollouts로 명령줄로 쉽게 배포하는 실습을 진행했습니다.앞선 수업에서 배포 실습에서 진행한 블루-그린과 Canary 배포 전략을 실습했습니다. 회고아쉬운 점이제 쿠버네티스 인강을 보는 것에 익숙해진 것 같은데 끝나서 아쉽습니다.그동안 제 100프로의 노력을 다하지 못하고 1달을 보낸 것 같아 아쉽습니다. 보완하고 싶은 점영상들을 다시 복습하면서 제 블로그에 복습 내용을 정리해보고 싶습니다.실습 과정들도 복습하면서 제가 원하는 대로 수정도 해보고 제것으로 만들어서 나중에 코드들만 갖고 저만의 환경, 프로젝트에 사용해보고 싶습니다. 나아진 점쿠버네티스의 이론적인 이해가 늘었고 이미지를 통해서 배우다보니 그냥 명령어로 배울 때보다 머리 속에서 정리가 잘 됐습니다.처음 해보는 실습들을 배우며 이론의 이해도가 늘었습니다. 미션5Docker와 Containerd의 차이를 실습을 통해서 더 와닿았습니다. 추후에 도커 사용 횟수를 모두 채웠을 때 무작정 기다리지 않고 Containerd를 사용해 지속적인 이미지 사용 방법을 알게 됐습니다.
2025. 06. 17.
1
Docker와 Containerd 명령 실습 [미션5]
해당 게시물은 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의와 강의 자료를 수강한 뒤 작성하였습니다.인프런 러닝업 클럽의 [미션 5]에 해당하는 게시물입니다.도커▶ 사전 준비사항# 도커 파일 및 App 소스 다운로드 curl -O https://raw.githubusercontent.com/k8s-1pro/install/main/ground/etc/docker/Dockerfile curl -O https://raw.githubusercontent.com/k8s-1pro/install/main/ground/etc/docker/hello.js▶ 업로드 실습을 해보기 위해서는 본인의 도커 허브 Username 필요본인 도커 허브 Username : hoonzzang1. 빌드[root@cicd-server mission]# docker build -t hoonzzang/hello:1.0.0 . [+] Building 9.9s (7/7) FINISHED docker:default => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 157B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/node:slim 4.2s => [internal] load build context 0.0s => => transferring context: 275B 0.0s => [1/2] FROM docker.io/library/node:slim@sha256:b30c143a092c7dced8e17ad67a8783c03234d4844ee84c3 5.3s => => resolve docker.io/library/node:slim@sha256:b30c143a092c7dced8e17ad67a8783c03234d4844ee84c3 0.0s => => sha256:1a6a7b2e2e2c80a6973f57aa8b0c6ad67a961ddbc5ef326c448e133f93564ff9 1.93kB / 1.93kB 0.0s => => sha256:26c0b956ed16dae9780bcb6c24f8161b3f8d44339c435691372d8fe1f270d97b 6.57kB / 6.57kB 0.0s => => sha256:dad67da3f26bce15939543965e09c4059533b025f707aad72ed3d3f3a09c66f8 28.23MB / 28.23MB 1.6s => => sha256:ea9602600a53af802a015c3d6bc5298ce2b6dff888a6f93b2861465f710804c2 3.31kB / 3.31kB 1.6s => => sha256:e03b89ff903664199350b286d7985167de4c079a4ed44baefc09cc1d2e0395ca 51.04MB / 51.04MB 3.3s => => sha256:b30c143a092c7dced8e17ad67a8783c03234d4844ee84c39090c9780491aaf89 5.20kB / 5.20kB 0.0s => => sha256:b03d7a90d937df6cc4c0c2e094b722156a78951c3b5cbe9c383f9a735ea3c316 1.71MB / 1.71MB 2.0s => => sha256:748509dbfbee9fa52f4b018cdaefbc837ee275e458fbdd76b96b312b764a27ac 447B / 447B 1.9s => => extracting sha256:dad67da3f26bce15939543965e09c4059533b025f707aad72ed3d3f3a09c66f8 1.5s => => extracting sha256:ea9602600a53af802a015c3d6bc5298ce2b6dff888a6f93b2861465f710804c2 0.0s => => extracting sha256:e03b89ff903664199350b286d7985167de4c079a4ed44baefc09cc1d2e0395ca 1.5s => => extracting sha256:b03d7a90d937df6cc4c0c2e094b722156a78951c3b5cbe9c383f9a735ea3c316 0.2s => => extracting sha256:748509dbfbee9fa52f4b018cdaefbc837ee275e458fbdd76b96b312b764a27ac 0.0s => [2/2] COPY hello.js . 0.3s => exporting to image 0.0s => => exporting layers 0.0s => => writing image sha256:f6ef74ec70ee892aecc61799ec1ef2d1e435a8b4cc9e6fbda64800f7738e30d0 0.0s => => naming to docker.io/hoonzzang/hello:1.0.0 0.0s 2. 이미지 리스트 조회[root@cicd-server mission]# docker image list REPOSITORY TAG IMAGE ID CREATED SIZE hoonzzang/hello 1.0.0 f6ef74ec70ee 5 minutes ago 230MB 3. 태그 변경[root@cicd-server mission]# docker tag hoonzzang/hello:1.0.0 hoonzzang/hello:2.0.0 [root@cicd-server mission]# docker image list REPOSITORY TAG IMAGE ID CREATED SIZE hoonzzang/hello 1.0.0 f6ef74ec70ee 6 minutes ago 230MB hoonzzang/hello 2.0.0 f6ef74ec70ee 6 minutes ago 230MB 4-1. 로그인[root@cicd-server mission]# docker login -u hoonzzang Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded 4-2. 이미지 업로드[root@cicd-server mission]# docker push hoonzzang/hello:1.0.0 The push refers to repository [docker.io/hoonzzang/hello] d6097db963bb: Pushed 8a45580a6679: Mounted from library/node d5b49e0b6f8f: Mounted from library/node eaf814c4be3d: Mounted from library/node 59cd39de7802: Mounted from library/node 7fb72a7d1a8e: Mounted from library/node 1.0.0: digest: sha256:ca358dd2d3526da7622485c8c9bb813ada128b771136a6113234e0a4d13b4b3b size: 1574 5. 이미지 삭제[root@cicd-server mission]# docker rmi hoonzzang/hello:1.0.0 Untagged: hoonzzang/hello:1.0.0 [root@cicd-server mission]# docker rmi hoonzzang/hello:2.0.0 Untagged: hoonzzang/hello:2.0.0 Untagged: hoonzzang/hello@sha256:ca358dd2d3526da7622485c8c9bb813ada128b771136a6113234e0a4d13b4b3b Deleted: sha256:f6ef74ec70ee892aecc61799ec1ef2d1e435a8b4cc9e6fbda64800f7738e30d0 6. 이미지 다운로드[root@cicd-server mission]# docker pull hoonzzang/hello:1.0.0 1.0.0: Pulling from hoonzzang/hello dad67da3f26b: Already exists ea9602600a53: Already exists e03b89ff9036: Already exists b03d7a90d937: Already exists 748509dbfbee: Already exists 9e44e6272433: Already exists Digest: sha256:ca358dd2d3526da7622485c8c9bb813ada128b771136a6113234e0a4d13b4b3b Status: Downloaded newer image for hoonzzang/hello:1.0.0 docker.io/hoonzzang/hello:1.0.0 7. 이미지 -> 파일로 변환[root@cicd-server mission]# docker save -o file.tar hoonzzang/hello:1.0.0 [root@cicd-server mission]# ls Dockerfile file.tar hello.js [root@cicd-server mission]# ls file.tar file.tar ▶ 이미지 삭제[root@cicd-server mission]# docker rmi hoonzzang/hello:1.0.0 Untagged: hoonzzang/hello:1.0.0 Untagged: hoonzzang/hello@sha256:ca358dd2d3526da7622485c8c9bb813ada128b771136a6113234e0a4d13b4b3b Deleted: sha256:f6ef74ec70ee892aecc61799ec1ef2d1e435a8b4cc9e6fbda64800f7738e30d0 8. 파일 -> 이미지로 변환[root@cicd-server mission]# docker load -i file.tar Loaded image: hoonzzang/hello:1.0.0 [root@cicd-server mission]# docker image list REPOSITORY TAG IMAGE ID CREATED SIZE hoonzzang/hello 1.0.0 f6ef74ec70ee 12 minutes ago 230MB ▶ 정리[root@cicd-server mission]# docker rmi hoonzzang/hello:1.0.0 Untagged: hoonzzang/hello:1.0.0 Deleted: sha256:f6ef74ec70ee892aecc61799ec1ef2d1e435a8b4cc9e6fbda64800f7738e30d0 [root@cicd-server mission]# rm file.tar rm: remove regular file 'file.tar'? yes 컨테이너디 (Containerd) 1. 네임스페이스 조회[root@k8s-master ~]# ctr ns list NAME LABELS k8s.io 2. 특정 네임스페이스 내 이미지 조회[root@k8s-master ~]# ctr -n k8s.io image list REF TYPE DIGEST SIZE PLATFORMS LABELS docker.io/1pro/api-tester:v1.0.0 application/vnd.oci.image.index.v1+json sha256:6b38dd347b66c7f14c393280a040831a72b4a93fd5beddc011ee852c26f35058 248.3 MiB linux/amd64,linux/arm64,unknown/unknown io.cri-containerd.image=managed docker.io/1pro/api-tester:v2.0.0 application/vnd.oci.image.index.v1+json sha256:eed09de27648c5e13a7978069e1af63908bf4c6fd023d73de993e8b6abf556b4 248.3 MiB linux/amd64,linux/arm64,unknown/unknown io.cri-containerd.image=managed docker.io/1pro/api-tester@sha256:6b38dd347b66c7f14c393280a040831a72b4a93fd5beddc011ee852c26f35058 application/vnd.oci.image.index.v1+json sha256:6b38dd347b66c7f14c393280a040831a72b4a93fd5beddc011ee852c26f35058 248.3 MiB linux/amd64,linux/arm64,unknown/unknown io.cri-containerd.image=managed docker.io/1pro/api-tester@sha256:eed09de27648c5e13a7978069e1af63908bf4c6fd023d73de993e8b6abf556b4 application/vnd.oci.image.index.v1+json sha256:eed09de27648c5e13a7978069e1af63908bf4c6fd023d73de993e8b6abf556b4 248.3 MiB linux/amd64,linux/arm64,unknown/unknown io.cri-containerd.image=managed docker.io/1pro/app:latest application/vnd.oci.image.index.v1+json sha256:9d81d340d25b6bf7ec48e742cc149c170cdf8c94263da540a7d7034be476bd6b 248.3 MiB linux/amd64,linux/arm64,unknown/unknown io.cri-containerd.image=managed docker.io/1pro/app@sha256:9d81d340d25b6bf7ec48e742cc149c170cdf8c94263da540a7d7034be476bd6b application/vnd.oci.image.index.v1+json sha256:9d81d340d25b6bf7ec48e742cc149c170cdf8c94263da540a7d7034be476bd6b 248.3 MiB linux/amd64,linux/arm64,unknown/unknown io.cri-containerd.image=managed docker.io/calico/apiserver:v3.26.4 application/vnd.docker.distribution.manifest.list.v2+json sha256:c520f71091cd09a9c9628a4e010f6fbc6118da9573af46af5b3f4c3ed8d463dc 37.8 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/apiserver@sha256:c520f71091cd09a9c9628a4e010f6fbc6118da9573af46af5b3f4c3ed8d463dc application/vnd.docker.distribution.manifest.list.v2+json sha256:c520f71091cd09a9c9628a4e010f6fbc6118da9573af46af5b3f4c3ed8d463dc 37.8 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/cni:v3.26.4 application/vnd.docker.distribution.manifest.list.v2+json sha256:7c5895c5d6ed3266bcd405fbcdbb078ca484688673c3479f0f18bf072d58c242 89.4 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/cni@sha256:7c5895c5d6ed3266bcd405fbcdbb078ca484688673c3479f0f18bf072d58c242 application/vnd.docker.distribution.manifest.list.v2+json sha256:7c5895c5d6ed3266bcd405fbcdbb078ca484688673c3479f0f18bf072d58c242 89.4 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/csi:v3.26.4 application/vnd.docker.distribution.manifest.list.v2+json sha256:0ab0fafee845c82c1a31bc2a3d5df29768626d570fbbead4813ad0da4a4ebf4b 8.6 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/csi@sha256:0ab0fafee845c82c1a31bc2a3d5df29768626d570fbbead4813ad0da4a4ebf4b application/vnd.docker.distribution.manifest.list.v2+json sha256:0ab0fafee845c82c1a31bc2a3d5df29768626d570fbbead4813ad0da4a4ebf4b 8.6 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/kube-controllers:v3.26.4 application/vnd.docker.distribution.manifest.list.v2+json sha256:5fce14b4dfcd63f1a4663176be4f236600b410cd896d054f56291c566292c86e 31.4 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/kube-controllers@sha256:5fce14b4dfcd63f1a4663176be4f236600b410cd896d054f56291c566292c86e application/vnd.docker.distribution.manifest.list.v2+json sha256:5fce14b4dfcd63f1a4663176be4f236600b410cd896d054f56291c566292c86e 31.4 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/node-driver-registrar:v3.26.4 application/vnd.docker.distribution.manifest.list.v2+json sha256:77db9df0ecd41c514d8dcab3b2681091f98f8d70e29a03df12c086a4e032639b 10.7 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/node-driver-registrar@sha256:77db9df0ecd41c514d8dcab3b2681091f98f8d70e29a03df12c086a4e032639b application/vnd.docker.distribution.manifest.list.v2+json sha256:77db9df0ecd41c514d8dcab3b2681091f98f8d70e29a03df12c086a4e032639b 10.7 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/node:v3.26.4 application/vnd.docker.distribution.manifest.list.v2+json sha256:a8b77a5f27b167501465f7f5fb7601c44af4df8dccd1c7201363bbb301d1fe40 85.3 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/node@sha256:a8b77a5f27b167501465f7f5fb7601c44af4df8dccd1c7201363bbb301d1fe40 application/vnd.docker.distribution.manifest.list.v2+json sha256:a8b77a5f27b167501465f7f5fb7601c44af4df8dccd1c7201363bbb301d1fe40 85.3 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/pod2daemon-flexvol:v3.26.4 application/vnd.docker.distribution.manifest.list.v2+json sha256:cf169a0c328a5b4f2dc96b224c3cf6dbc2c8269c6ecafac54bc1de00102b665e 7.1 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/pod2daemon-flexvol@sha256:cf169a0c328a5b4f2dc96b224c3cf6dbc2c8269c6ecafac54bc1de00102b665e application/vnd.docker.distribution.manifest.list.v2+json sha256:cf169a0c328a5b4f2dc96b224c3cf6dbc2c8269c6ecafac54bc1de00102b665e 7.1 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/typha:v3.26.4 application/vnd.docker.distribution.manifest.list.v2+json sha256:ebe99272d38ff65255c1fba33c17d10f588b612625b19c68fe5aeed0f134fa74 26.9 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/calico/typha@sha256:ebe99272d38ff65255c1fba33c17d10f588b612625b19c68fe5aeed0f134fa74 application/vnd.docker.distribution.manifest.list.v2+json sha256:ebe99272d38ff65255c1fba33c17d10f588b612625b19c68fe5aeed0f134fa74 26.9 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/grafana/grafana:9.5.2 application/vnd.docker.distribution.manifest.list.v2+json sha256:39c849cebccccb22c0a5194f07c535669386190e029aa440ad535226974a5809 84.9 MiB linux/amd64,linux/arm/v7,linux/arm64/v8 io.cri-containerd.image=managed docker.io/grafana/grafana@sha256:39c849cebccccb22c0a5194f07c535669386190e029aa440ad535226974a5809 application/vnd.docker.distribution.manifest.list.v2+json sha256:39c849cebccccb22c0a5194f07c535669386190e029aa440ad535226974a5809 84.9 MiB linux/amd64,linux/arm/v7,linux/arm64/v8 io.cri-containerd.image=managed docker.io/grafana/loki:2.6.1 application/vnd.docker.distribution.manifest.list.v2+json sha256:1ee60f980950b00e505bd564b40f720132a0653b110e993043bb5940673d060a 19.2 MiB linux/amd64,linux/arm/v7,linux/arm64/v8 io.cri-containerd.image=managed docker.io/grafana/loki@sha256:1ee60f980950b00e505bd564b40f720132a0653b110e993043bb5940673d060a application/vnd.docker.distribution.manifest.list.v2+json sha256:1ee60f980950b00e505bd564b40f720132a0653b110e993043bb5940673d060a 19.2 MiB linux/amd64,linux/arm/v7,linux/arm64/v8 io.cri-containerd.image=managed docker.io/grafana/promtail:2.7.4 application/vnd.docker.distribution.manifest.list.v2+json sha256:db66221bcc9510f3101121d42354b19c83cb810c5480e4936eb75c43443656f4 69.4 MiB linux/amd64,linux/arm/v7,linux/arm64/v8 io.cri-containerd.image=managed docker.io/grafana/promtail@sha256:db66221bcc9510f3101121d42354b19c83cb810c5480e4936eb75c43443656f4 application/vnd.docker.distribution.manifest.list.v2+json sha256:db66221bcc9510f3101121d42354b19c83cb810c5480e4936eb75c43443656f4 69.4 MiB linux/amd64,linux/arm/v7,linux/arm64/v8 io.cri-containerd.image=managed docker.io/hoonzzang/api-tester:v1.0.0 application/vnd.docker.distribution.manifest.v2+json sha256:9d2e4e0da69986c5d270a8f781d5535a41a2ea727cc6089c36750c99508c911e 248.3 MiB linux/amd64 io.cri-containerd.image=managed docker.io/hoonzzang/api-tester@sha256:9d2e4e0da69986c5d270a8f781d5535a41a2ea727cc6089c36750c99508c911e application/vnd.docker.distribution.manifest.v2+json sha256:9d2e4e0da69986c5d270a8f781d5535a41a2ea727cc6089c36750c99508c911e 248.3 MiB linux/amd64 io.cri-containerd.image=managed docker.io/kubernetesui/dashboard:v2.7.0 application/vnd.docker.distribution.manifest.list.v2+json sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93 72.3 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/kubernetesui/dashboard@sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93 application/vnd.docker.distribution.manifest.list.v2+json sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93 72.3 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/kubernetesui/metrics-scraper:v1.0.8 application/vnd.docker.distribution.manifest.list.v2+json sha256:76049887f07a0476dc93efc2d3569b9529bf982b22d29f356092ce206e98765c 18.8 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed docker.io/kubernetesui/metrics-scraper@sha256:76049887f07a0476dc93efc2d3569b9529bf982b22d29f356092ce206e98765c application/vnd.docker.distribution.manifest.list.v2+json sha256:76049887f07a0476dc93efc2d3569b9529bf982b22d29f356092ce206e98765c 18.8 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed quay.io/brancz/kube-rbac-proxy:v0.14.1 application/vnd.docker.distribution.manifest.list.v2+json sha256:58d91a5faaf8f8222f8aa6c0a170826bbabcc60eedab71afd2326548cde84171 23.5 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed quay.io/brancz/kube-rbac-proxy@sha256:58d91a5faaf8f8222f8aa6c0a170826bbabcc60eedab71afd2326548cde84171 application/vnd.docker.distribution.manifest.list.v2+json sha256:58d91a5faaf8f8222f8aa6c0a170826bbabcc60eedab71afd2326548cde84171 23.5 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed quay.io/prometheus-operator/prometheus-config-reloader:v0.65.2 application/vnd.docker.distribution.manifest.list.v2+json sha256:18632ea5cff38cda5b08054057297e527dcfc144a5f195c1c836a0805a9bbad1 5.1 MiB linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x io.cri-containerd.image=managed quay.io/prometheus-operator/prometheus-config-reloader@sha256:18632ea5cff38cda5b08054057297e527dcfc144a5f195c1c836a0805a9bbad1 application/vnd.docker.distribution.manifest.list.v2+json sha256:18632ea5cff38cda5b08054057297e527dcfc144a5f195c1c836a0805a9bbad1 5.1 MiB linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x io.cri-containerd.image=managed quay.io/prometheus-operator/prometheus-operator:v0.65.2 application/vnd.docker.distribution.manifest.list.v2+json sha256:5c3da991d54f5ff9b84e5a1fb55110b4de7fcd00723367eff6f90392ad01e79b 16.2 MiB linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x io.cri-containerd.image=managed quay.io/prometheus-operator/prometheus-operator@sha256:5c3da991d54f5ff9b84e5a1fb55110b4de7fcd00723367eff6f90392ad01e79b application/vnd.docker.distribution.manifest.list.v2+json sha256:5c3da991d54f5ff9b84e5a1fb55110b4de7fcd00723367eff6f90392ad01e79b 16.2 MiB linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x io.cri-containerd.image=managed quay.io/prometheus/node-exporter:v1.6.0 application/vnd.docker.distribution.manifest.list.v2+json sha256:d2e48098c364e61ee62d9016eed863b66331d87cf67146f2068b70ed9d9b4f98 11.2 MiB linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x io.cri-containerd.image=managed quay.io/prometheus/node-exporter@sha256:d2e48098c364e61ee62d9016eed863b66331d87cf67146f2068b70ed9d9b4f98 application/vnd.docker.distribution.manifest.list.v2+json sha256:d2e48098c364e61ee62d9016eed863b66331d87cf67146f2068b70ed9d9b4f98 11.2 MiB linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x io.cri-containerd.image=managed quay.io/prometheus/prometheus:v2.44.0 application/vnd.docker.distribution.manifest.list.v2+json sha256:0f0b7feb6f02620df7d493ad7437b6ee95b6d16d8d18799f3607124e501444b1 88.7 MiB linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x io.cri-containerd.image=managed quay.io/prometheus/prometheus@sha256:0f0b7feb6f02620df7d493ad7437b6ee95b6d16d8d18799f3607124e501444b1 application/vnd.docker.distribution.manifest.list.v2+json sha256:0f0b7feb6f02620df7d493ad7437b6ee95b6d16d8d18799f3607124e501444b1 88.7 MiB linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x io.cri-containerd.image=managed quay.io/tigera/operator:v1.30.9 application/vnd.docker.distribution.manifest.list.v2+json sha256:431f037ff18b5c867d01312e42671effc55602421aeed25dd3f6109f70596b4a 19.8 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed quay.io/tigera/operator@sha256:431f037ff18b5c867d01312e42671effc55602421aeed25dd3f6109f70596b4a application/vnd.docker.distribution.manifest.list.v2+json sha256:431f037ff18b5c867d01312e42671effc55602421aeed25dd3f6109f70596b4a 19.8 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/coredns/coredns:v1.10.1 application/vnd.docker.distribution.manifest.list.v2+json sha256:a0ead06651cf580044aeb0a0feba63591858fb2e43ade8c9dea45a6a89ae7e5e 15.4 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/mips64le,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/coredns/coredns@sha256:a0ead06651cf580044aeb0a0feba63591858fb2e43ade8c9dea45a6a89ae7e5e application/vnd.docker.distribution.manifest.list.v2+json sha256:a0ead06651cf580044aeb0a0feba63591858fb2e43ade8c9dea45a6a89ae7e5e 15.4 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/mips64le,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/etcd:3.5.7-0 application/vnd.docker.distribution.manifest.list.v2+json sha256:51eae8381dcb1078289fa7b4f3df2630cdc18d09fb56f8e56b41c40e191d6c83 96.9 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,windows/amd64 io.cri-containerd.image=managed registry.k8s.io/etcd@sha256:51eae8381dcb1078289fa7b4f3df2630cdc18d09fb56f8e56b41c40e191d6c83 application/vnd.docker.distribution.manifest.list.v2+json sha256:51eae8381dcb1078289fa7b4f3df2630cdc18d09fb56f8e56b41c40e191d6c83 96.9 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,windows/amd64 io.cri-containerd.image=managed registry.k8s.io/kube-apiserver:v1.27.16 application/vnd.docker.distribution.manifest.list.v2+json sha256:77fe7968e3b27222e2719b3df7efa37494e0504497b865b19e2595ef5f790520 32.3 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/kube-apiserver@sha256:77fe7968e3b27222e2719b3df7efa37494e0504497b865b19e2595ef5f790520 application/vnd.docker.distribution.manifest.list.v2+json sha256:77fe7968e3b27222e2719b3df7efa37494e0504497b865b19e2595ef5f790520 32.3 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/kube-controller-manager:v1.27.16 application/vnd.docker.distribution.manifest.list.v2+json sha256:25ccfb06da9ceabfdfcb6826925b4ea0dc7b271beec5355ad49ca8687ebcad67 30.0 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/kube-controller-manager@sha256:25ccfb06da9ceabfdfcb6826925b4ea0dc7b271beec5355ad49ca8687ebcad67 application/vnd.docker.distribution.manifest.list.v2+json sha256:25ccfb06da9ceabfdfcb6826925b4ea0dc7b271beec5355ad49ca8687ebcad67 30.0 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/kube-proxy:v1.27.16 application/vnd.docker.distribution.manifest.list.v2+json sha256:f775c9f86ed22956ceae174ee9474aa8044f2a675b72124d566b7d7ac866b249 26.4 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/kube-proxy@sha256:f775c9f86ed22956ceae174ee9474aa8044f2a675b72124d566b7d7ac866b249 application/vnd.docker.distribution.manifest.list.v2+json sha256:f775c9f86ed22956ceae174ee9474aa8044f2a675b72124d566b7d7ac866b249 26.4 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/kube-scheduler:v1.27.16 application/vnd.docker.distribution.manifest.list.v2+json sha256:c36386d8885561c417e2bf59dbb38989e4dac25f3d2bd95f7d3fd7e475847a57 17.3 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/kube-scheduler@sha256:c36386d8885561c417e2bf59dbb38989e4dac25f3d2bd95f7d3fd7e475847a57 application/vnd.docker.distribution.manifest.list.v2+json sha256:c36386d8885561c417e2bf59dbb38989e4dac25f3d2bd95f7d3fd7e475847a57 17.3 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.9.2 application/vnd.docker.distribution.manifest.list.v2+json sha256:5ac2e67a862cd3baa0eb4fd7683d54928fd76ea3a61cde50508922c956901d8c 12.7 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/kube-state-metrics/kube-state-metrics@sha256:5ac2e67a862cd3baa0eb4fd7683d54928fd76ea3a61cde50508922c956901d8c application/vnd.docker.distribution.manifest.list.v2+json sha256:5ac2e67a862cd3baa0eb4fd7683d54928fd76ea3a61cde50508922c956901d8c 12.7 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/metrics-server/metrics-server:v0.6.3 application/vnd.docker.distribution.manifest.list.v2+json sha256:c60778fa1c44d0c5a0c4530ebe83f9243ee6fc02f4c3dc59226c201931350b10 28.6 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/metrics-server/metrics-server@sha256:c60778fa1c44d0c5a0c4530ebe83f9243ee6fc02f4c3dc59226c201931350b10 application/vnd.docker.distribution.manifest.list.v2+json sha256:c60778fa1c44d0c5a0c4530ebe83f9243ee6fc02f4c3dc59226c201931350b10 28.6 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/pause:3.6 application/vnd.docker.distribution.manifest.list.v2+json sha256:3d380ca8864549e74af4b29c10f9cb0956236dfb01c40ca076fb6c37253234db 294.7 KiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,windows/amd64 io.cri-containerd.image=managed registry.k8s.io/pause:3.9 application/vnd.docker.distribution.manifest.list.v2+json sha256:7031c1b283388d2c2e09b57badb803c05ebed362dc88d84b480cc47f72a21097 314.0 KiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,windows/amd64 io.cri-containerd.image=managed registry.k8s.io/pause@sha256:3d380ca8864549e74af4b29c10f9cb0956236dfb01c40ca076fb6c37253234db application/vnd.docker.distribution.manifest.list.v2+json sha256:3d380ca8864549e74af4b29c10f9cb0956236dfb01c40ca076fb6c37253234db 294.7 KiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,windows/amd64 io.cri-containerd.image=managed registry.k8s.io/pause@sha256:7031c1b283388d2c2e09b57badb803c05ebed362dc88d84b480cc47f72a21097 application/vnd.docker.distribution.manifest.list.v2+json sha256:7031c1b283388d2c2e09b57badb803c05ebed362dc88d84b480cc47f72a21097 314.0 KiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,windows/amd64 io.cri-containerd.image=managed registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.10.0 application/vnd.docker.distribution.manifest.list.v2+json sha256:2f34cb3a04a0fee6034f4d63ce3ee7786c0f762dc9f3bf196c70e894dd92edd1 28.1 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed registry.k8s.io/prometheus-adapter/prometheus-adapter@sha256:2f34cb3a04a0fee6034f4d63ce3ee7786c0f762dc9f3bf196c70e894dd92edd1 application/vnd.docker.distribution.manifest.list.v2+json sha256:2f34cb3a04a0fee6034f4d63ce3ee7786c0f762dc9f3bf196c70e894dd92edd1 28.1 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:02337dea82f1d6776e89acb28b9bd6b0e1a571552c321c8dae3a3cd09b8f10d6 application/vnd.oci.image.index.v1+json sha256:eed09de27648c5e13a7978069e1af63908bf4c6fd023d73de993e8b6abf556b4 248.3 MiB linux/amd64,linux/arm64,unknown/unknown io.cri-containerd.image=managed sha256:07655ddf2eebe5d250f7a72c25f638b27126805d61779741b4e62e69ba080558 application/vnd.docker.distribution.manifest.list.v2+json sha256:2e500d29e9d5f4a086b908eb8dfe7ecac57d2ab09d65b24f588b1d449841ef93 72.3 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:08a0bfca3fbb866e63ea5b601d44877ff76fbe3b054b4e0af06494501d5b0eb3 application/vnd.oci.image.index.v1+json sha256:6b38dd347b66c7f14c393280a040831a72b4a93fd5beddc011ee852c26f35058 248.3 MiB linux/amd64,linux/arm64,unknown/unknown io.cri-containerd.image=managed sha256:1113933272f1e851cbb93d4922cc9765a8f8a7a0f8ba668188f8b46d353d9fc5 application/vnd.docker.distribution.manifest.list.v2+json sha256:77fe7968e3b27222e2719b3df7efa37494e0504497b865b19e2595ef5f790520 32.3 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:115053965e86b2df4d78af78d7951b8644839d20a03820c6df59a261103315f7 application/vnd.docker.distribution.manifest.list.v2+json sha256:76049887f07a0476dc93efc2d3569b9529bf982b22d29f356092ce206e98765c 18.8 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:173d3570a5af2b2ef8816b40af3ca985280549520e8d328a7f20333d9f354d1b application/vnd.docker.distribution.manifest.list.v2+json sha256:d2e48098c364e61ee62d9016eed863b66331d87cf67146f2068b70ed9d9b4f98 11.2 MiB linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:17d35f5bad38f1d00ee41111d6655540797ec5011740a733b706b4717d300ede application/vnd.docker.distribution.manifest.list.v2+json sha256:7c5895c5d6ed3266bcd405fbcdbb078ca484688673c3479f0f18bf072d58c242 89.4 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:1da78bf35ce712c624e66a97ee43ee1c223acc6e41f57f00b0e9d8509072ecf8 application/vnd.docker.distribution.manifest.list.v2+json sha256:58d91a5faaf8f8222f8aa6c0a170826bbabcc60eedab71afd2326548cde84171 23.5 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:2db343b95a4c2dd01357c800499a1e111dbd825e174bf57fab148f08cd135ccf application/vnd.docker.distribution.manifest.list.v2+json sha256:25ccfb06da9ceabfdfcb6826925b4ea0dc7b271beec5355ad49ca8687ebcad67 30.0 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:2df54f2d834883a3a24b6380d7378c0078d589a947b6ce89b669b1e9596ac306 application/vnd.docker.distribution.manifest.list.v2+json sha256:431f037ff18b5c867d01312e42671effc55602421aeed25dd3f6109f70596b4a 19.8 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:33e977a8921d4750e95e77c0c30a510bfe4e50b5b92bca50c668c39d92f0aec7 application/vnd.docker.distribution.manifest.list.v2+json sha256:c520f71091cd09a9c9628a4e010f6fbc6118da9573af46af5b3f4c3ed8d463dc 37.8 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:42dd24636051991ba549340ec7312c07f189708de8e57674da53dcb11a5c8315 application/vnd.docker.distribution.manifest.list.v2+json sha256:1ee60f980950b00e505bd564b40f720132a0653b110e993043bb5940673d060a 19.2 MiB linux/amd64,linux/arm/v7,linux/arm64/v8 io.cri-containerd.image=managed sha256:5269a4e7c596c0dfffc4922e05db348f71ab78017279fe27a7cebd942b274b99 application/vnd.docker.distribution.manifest.list.v2+json sha256:0ab0fafee845c82c1a31bc2a3d5df29768626d570fbbead4813ad0da4a4ebf4b 8.6 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:6270bb605e12e581514ada5fd5b3216f727db55dc87d5889c790e4c760683fee application/vnd.docker.distribution.manifest.list.v2+json sha256:3d380ca8864549e74af4b29c10f9cb0956236dfb01c40ca076fb6c37253234db 294.7 KiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,windows/amd64 io.cri-containerd.image=managed sha256:67469ed830756ddf7bbfea7022dabeac7290346236d92987f31c149bdd8378df application/vnd.docker.distribution.manifest.list.v2+json sha256:ebe99272d38ff65255c1fba33c17d10f588b612625b19c68fe5aeed0f134fa74 26.9 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:6c5313ea00cc57f404a3d7a2967f674e21bcfc9172f6d5558d204f461b90b3b7 application/vnd.docker.distribution.manifest.list.v2+json sha256:39c849cebccccb22c0a5194f07c535669386190e029aa440ad535226974a5809 84.9 MiB linux/amd64,linux/arm/v7,linux/arm64/v8 io.cri-containerd.image=managed sha256:75972a31ad256ca862df92e395141ef811a4213f265d6d338455e863adbf73fa application/vnd.docker.distribution.manifest.list.v2+json sha256:0f0b7feb6f02620df7d493ad7437b6ee95b6d16d8d18799f3607124e501444b1 88.7 MiB linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:77db55adb93bf28d40299429757423595a6e0d87c367a3e6c8019e516c2a56da application/vnd.docker.distribution.manifest.list.v2+json sha256:5c3da991d54f5ff9b84e5a1fb55110b4de7fcd00723367eff6f90392ad01e79b 16.2 MiB linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:78e4198d60e924f58ae4e9dbcf647dfe0fc72eb594fba3a9f0f35b98eeb3a759 application/vnd.docker.distribution.manifest.list.v2+json sha256:db66221bcc9510f3101121d42354b19c83cb810c5480e4936eb75c43443656f4 69.4 MiB linux/amd64,linux/arm/v7,linux/arm64/v8 io.cri-containerd.image=managed sha256:791bf87161b80649906f4af26cb2562771f1f98b94a31358db9a6ee8761da27e application/vnd.docker.distribution.manifest.v2+json sha256:9d2e4e0da69986c5d270a8f781d5535a41a2ea727cc6089c36750c99508c911e 248.3 MiB linux/amd64 io.cri-containerd.image=managed sha256:817bbe3f2e5179b5fa7dd4085c87aab1faaf9dc879e3b1d05796901a006f58ab application/vnd.docker.distribution.manifest.list.v2+json sha256:c60778fa1c44d0c5a0c4530ebe83f9243ee6fc02f4c3dc59226c201931350b10 28.6 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:8465800dbe52dc0ca865e06af0b2ec37a4ff38e7baefa3285a18d809f084be0d application/vnd.docker.distribution.manifest.list.v2+json sha256:5ac2e67a862cd3baa0eb4fd7683d54928fd76ea3a61cde50508922c956901d8c 12.7 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:86b6af7dd652c1b38118be1c338e9354b33469e69a218f7e290a0ca5304ad681 application/vnd.docker.distribution.manifest.list.v2+json sha256:51eae8381dcb1078289fa7b4f3df2630cdc18d09fb56f8e56b41c40e191d6c83 96.9 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,windows/amd64 io.cri-containerd.image=managed sha256:91ad8454afddc4daa2217c19ea39700e0bd99fb0997ff5316cff450197064a98 application/vnd.docker.distribution.manifest.list.v2+json sha256:c36386d8885561c417e2bf59dbb38989e4dac25f3d2bd95f7d3fd7e475847a57 17.3 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:98013c939b20e1abb864e5e965f67305c38ef09228cdb4ca12f180b8ec04f6df application/vnd.docker.distribution.manifest.list.v2+json sha256:18632ea5cff38cda5b08054057297e527dcfc144a5f195c1c836a0805a9bbad1 5.1 MiB linux/amd64,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:b32f991981530a0795906b5cda923c5bb5d949f25cd915d78c8ee665fafbeec8 application/vnd.docker.distribution.manifest.list.v2+json sha256:5fce14b4dfcd63f1a4663176be4f236600b410cd896d054f56291c566292c86e 31.4 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:db40998d424e93956fb6b50b9a0ab3e05a780ca8215c695b368cae3a471e3ba1 application/vnd.oci.image.index.v1+json sha256:9d81d340d25b6bf7ec48e742cc149c170cdf8c94263da540a7d7034be476bd6b 248.3 MiB linux/amd64,linux/arm64,unknown/unknown io.cri-containerd.image=managed sha256:ded66453eb630bd4d4efddee2ccf290cbca4c67bca07c2d53c35c35dd0251136 application/vnd.docker.distribution.manifest.list.v2+json sha256:a8b77a5f27b167501465f7f5fb7601c44af4df8dccd1c7201363bbb301d1fe40 85.3 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:e6f1816883972d4be47bd48879a08919b96afcd344132622e4d444987919323c application/vnd.docker.distribution.manifest.list.v2+json sha256:7031c1b283388d2c2e09b57badb803c05ebed362dc88d84b480cc47f72a21097 314.0 KiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x,windows/amd64 io.cri-containerd.image=managed sha256:e92afb5b902be1049756335c5338f820efb0192b208113d06a3ac0454ce32663 application/vnd.docker.distribution.manifest.list.v2+json sha256:2f34cb3a04a0fee6034f4d63ce3ee7786c0f762dc9f3bf196c70e894dd92edd1 28.1 MiB linux/amd64,linux/arm,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:e9d4fd70e7d9c5d60a1b0bdd375950c77518a83b184bf3770cba99a0b5a83610 application/vnd.docker.distribution.manifest.list.v2+json sha256:cf169a0c328a5b4f2dc96b224c3cf6dbc2c8269c6ecafac54bc1de00102b665e 7.1 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:ea1f910af975c6eb292175cf49f168c2cfd425fb50c75a51fd0b40e262c68b12 application/vnd.docker.distribution.manifest.list.v2+json sha256:f775c9f86ed22956ceae174ee9474aa8044f2a675b72124d566b7d7ac866b249 26.4 MiB linux/amd64,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:ead0a4a53df89fd173874b46093b6e62d8c72967bbf606d672c9e8c9b601a4fc application/vnd.docker.distribution.manifest.list.v2+json sha256:a0ead06651cf580044aeb0a0feba63591858fb2e43ade8c9dea45a6a89ae7e5e 15.4 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/mips64le,linux/ppc64le,linux/s390x io.cri-containerd.image=managed sha256:f5a1fb28a3f1ee8b37046c32abef11c4d458adc045d4668c3910a2e7f6b2930a application/vnd.docker.distribution.manifest.list.v2+json sha256:77db9df0ecd41c514d8dcab3b2681091f98f8d70e29a03df12c086a4e032639b 10.7 MiB linux/amd64,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x io.cri-containerd.image=managed 3. 다운로드 및 이미지 확인 (이미지는 default라는 네임스페이스에 다운 받아집니다.)[root@k8s-master ~]# ctr images pull docker.io/hoonzzang/hello:1.0.0 docker.io/hoonzzang/hello:1.0.0: resolved |++++++++++++++++++++++++++++++++++++++| manifest-sha256:ca358dd2d3526da7622485c8c9bb813ada128b771136a6113234e0a4d13b4b3b: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:9e44e62724332abe502c4710b8427ef0ff326666807a3a47267b74d99cdd0390: done |++++++++++++++++++++++++++++++++++++++| config-sha256:f6ef74ec70ee892aecc61799ec1ef2d1e435a8b4cc9e6fbda64800f7738e30d0: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:dad67da3f26bce15939543965e09c4059533b025f707aad72ed3d3f3a09c66f8: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:ea9602600a53af802a015c3d6bc5298ce2b6dff888a6f93b2861465f710804c2: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:e03b89ff903664199350b286d7985167de4c079a4ed44baefc09cc1d2e0395ca: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:b03d7a90d937df6cc4c0c2e094b722156a78951c3b5cbe9c383f9a735ea3c316: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:748509dbfbee9fa52f4b018cdaefbc837ee275e458fbdd76b96b312b764a27ac: done |++++++++++++++++++++++++++++++++++++++| elapsed: 7.6 s total: 77.2 M (10.2 MiB/s) unpacking linux/amd64 sha256:ca358dd2d3526da7622485c8c9bb813ada128b771136a6113234e0a4d13b4b3b... done: 2.843976863s [root@k8s-master ~]# ctr ns list NAME LABELS default k8s.io [root@k8s-master ~]# ctr images list REF TYPE DIGEST SIZE PLATFORMS LABELS docker.io/hoonzzang/hello:1.0.0 application/vnd.docker.distribution.manifest.v2+json sha256:ca358dd2d3526da7622485c8c9bb813ada128b771136a6113234e0a4d13b4b3b 77.2 MiB linux/amd64 - 4. 태그 변경[root@k8s-master ~]# ctr images tag docker.io/hoonzzang/hello:1.0.0 docker.io/hoonzzang/hello:2.0.0 docker.io/hoonzzang/hello:2.0.0 [root@k8s-master ~]# ctr images list REF TYPE DIGEST SIZE PLATFORMS LABELS docker.io/hoonzzang/hello:1.0.0 application/vnd.docker.distribution.manifest.v2+json sha256:ca358dd2d3526da7622485c8c9bb813ada128b771136a6113234e0a4d13b4b3b 77.2 MiB linux/amd64 - docker.io/hoonzzang/hello:2.0.0 application/vnd.docker.distribution.manifest.v2+json sha256:ca358dd2d3526da7622485c8c9bb813ada128b771136a6113234e0a4d13b4b3b 77.2 MiB linux/amd64 - 5. 업로드[root@k8s-master ~]# ctr image push docker.io/hoonzzang/hello:2.0.0 --user hoonzzang Password: manifest-sha256:ca358dd2d3526da7622485c8c9bb813ada128b771136a6113234e0a4d13b4b3b: done |++++++++++++++++++++++++++++++++++++++| config-sha256:f6ef74ec70ee892aecc61799ec1ef2d1e435a8b4cc9e6fbda64800f7738e30d0: done |++++++++++++++++++++++++++++++++++++++| elapsed: 3.4 s total: 8.9 Ki (2.6 KiB/s) 6. 이미지 (namespace : default) -> 파일로 변환[root@k8s-master ~]# ctr -n default image export file.tar docker.io/hoonzzang/hello:1.0.0 [root@k8s-master ~]# ls file.tar file.tar 7. 파일 -> 이미지로 변환 (namespace : k8s.io)[root@k8s-master ~]# ctr -n k8s.io image import file.tar unpacking docker.io/hoonzzang/hello:1.0.0 (sha256:ca358dd2d3526da7622485c8c9bb813ada128b771136a6113234e0a4d13b4b3b)...done [root@k8s-master ~]# ctr -n k8s.io image list | grep hello docker.io/hoonzzang/hello:1.0.0 application/vnd.docker.distribution.manifest.v2+json sha256:ca358dd2d3526da7622485c8c9bb813ada128b771136a6113234e0a4d13b4b3b 77.2 MiB linux/amd64 io.cri-containerd.image=managed 8. 삭제 (namespace : k8s.io)[root@k8s-master ~]# ctr -n k8s.io image remove docker.io/hoonzzang/hello:1.0.0 docker.io/hoonzzang/hello:1.0.0 [root@k8s-master ~]# ctr -n k8s.io image list | grep hello [번외수업] 같은 이미지를 도커에서 받았을 때와 쿠버네티스에서 받았을 때 사이즈가 다른 이유▶ Docker (490MB)[root@cicd-server ~]# docker pull hoonzzang/api-tester:v1.0.0 v1.0.0: Pulling from hoonzzang/api-tester 38a980f2cc8a: Already exists de849f1cfbe6: Already exists a7203ca35e75: Already exists 9434e39ea4e0: Already exists 4f4fb700ef54: Already exists Digest: sha256:9291559e6e75b033a43c598b745d6ecbec188c69baf50301bd033b472b85f0de Status: Downloaded newer image for hoonzzang/api-tester:v1.0.0 docker.io/hoonzzang/api-tester:v1.0.0 [root@cicd-server ~]# docker image list REPOSITORY TAG IMAGE ID CREATED SIZE hoonzzang/api-tester v1.0.0 0160bdcf08a2 2 days ago 490MB ▶ Containerd (248.3 MiB)[root@k8s-master ~]# ctr image pull docker.io/hoonzzang/api-tester:v1.0.0 docker.io/hoonzzang/api-tester:v1.0.0: resolved |++++++++++++++++++++++++++++++++++++++| manifest-sha256:9291559e6e75b033a43c598b745d6ecbec188c69baf50301bd033b472b85f0de: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1: done |++++++++++++++++++++++++++++++++++++++| config-sha256:0160bdcf08a27dd0134fe8907066f9159bc7abb20c00e3e7d4fde0ef6595878e: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:38a980f2cc8accf69c23deae6743d42a87eb34a54f02396f3fcfd7c2d06e2c5b: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:de849f1cfbe60b1c06a1db83a3129ab0ea397c4852b98e3e4300b12ee57ba111: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:a7203ca35e75e068651c9907d659adc721dba823441b78639fde66fc988f042f: done |++++++++++++++++++++++++++++++++++++++| layer-sha256:9434e39ea4e0d667bc6aed21b2845da55c923fe22d06bf8cf575f3c1f26da7b1: done |++++++++++++++++++++++++++++++++++++++| elapsed: 7.6 s total: 246.9 (32.5 MiB/s) unpacking linux/amd64 sha256:9291559e6e75b033a43c598b745d6ecbec188c69baf50301bd033b472b85f0de... done: 5.818201977s [root@k8s-master ~]# ctr image list REF TYPE DIGEST SIZE PLATFORMS LABELS docker.io/hoonzzang/api-tester:v1.0.0 application/vnd.docker.distribution.manifest.v2+json sha256:9291559e6e75b033a43c598b745d6ecbec188c69baf50301bd033b472b85f0de 248.3 MiB linux/amd64 - ==> 도커에서는 컨테이너 관리시 사용자 편의를 위해 다양한 추가 기능들이 들어있는데, 이 때문에 컨테이너 이미지를 도커로 가져올 때 이미지 본연의 크기보다 크게 잡히게 됩니다. 반면 Contaienrd를 사용하게 되면 도커에 비해서 작은 사이즈의 이미지를 가져올 수 있게 됩니다.그러나 위의 실습처럼 도커에서 가져온 이미지를 다시 Contaienrd로 가져오게 된다면 도커가 기본적으로 제공하는 추가 기능들로 인해 커진 이미지의 크기를 그대로 들어가 불필요하게 이미지가 커지게 됩니다.
쿠버네티스
・
일프로
・
러닝업클럽
2025. 06. 14.
1
쿠버네티스 어나더 클래스(지상편)-인프런 일프로강사님 / 3주차 발자국
강의 수강일주일 간 학습한 내용데브옵스 한방 정리개발 경험이 없다보니 개발부터 코드 관리, 테스트, 배포 그리고 운영 과정에 대한 개념이 없었지만 그래도 강의를 통해 조금은 이해가 됐습니다.그리고 여러 툴 들이 있어서 정신없기는 하지만 확실히 강사님이 말씀하신 것 처럼 한 두개의 툴들을 하나씩 경험하고 미숙하게나마 다루고 방법을 알게 되면서 해당 오픈 소스들이 더 잘 와닿고 접하는데 있어서 두려움? 이 사라지는 것 같습니다.MLOps나 FinOps는 들어봤는데 간략하게나마 설명해주셔서 해당 용어가 무슨 뜻인지 알게 됐습니다. 손쉽게 데브옵스 환경을 구축하는 방법깃허브와 도커허브는 이미 가입해 놓은 계정이 있어서 해당 계정을 사용했습니다.CI/CD 환경에서 쓸 오픈 소스로 Gradle, Jenkins, OpenJDK 프로그램을 새로 접하고 설치(강사님이 배포한 파일을 이용) 및 설정 하는 방법을 배웠습니다. 배포를 시작하기 전에 반드시 알아야 할 것들CI/CD 파이프라인 구성부터 배포 전략 선택 시에 신경써야할 요소들을 배웠습니다.이후 단계별로 차근차근 단순한 배포 파이프라인부터 점진적으로 고도화 되는 배포 파이프라인의 단계를 배웠습니다.이 강의를 통해 앞으로 있을 내용을 미리 예측해보는 시간이었습니다.Jenkins PipelineJenkins Pipeline 기능을 이용해 CI/CD 환경을 여러 단계에 걸쳐 구축하는 방법을 배웠고 실습 과정까지 진행했습니다.1단계에서는 가장 기초적인 구성부터 이후 여러 과정으로 나눠 환경 구축하는 단계를 세분화 과정, 그리고 Blue/Green 배포를 만들어보고 자동화 과정까지의 단계를 직접 경험해봤습니다.실무에서는 해당 내용처럼은 하지 않는다고 말씀해주셨지만 확실히 직접 실습해보니 개념이 더 잘 이해됐습니다. Helm과 Kustomize 비교하며 사용하기 - Helm 배포쿠버네티스 패키지 매니저인 Helm과 Kustomize의 공통점 및 차이점에 대해 간략하게 배웠습니다. 그 중 이번 주차는 Helm에 대해서 배웠는데 각각의 기능과 목적에 따라 나눠 놓은 것이 ansible의 role과 비슷하다는 느낌을 받았습니다.Helm 파일들을 나열하고 수정하는 부분에서 놓친 것 같아서 해당 파트의 수업을 여러 번 다시 볼 예정입니다. 회고아쉬운 점Helm 부분 따라가다가 놓친 것 같습니다.복습을 아예 놓쳤습니다... 급하게 미션 2,3,4 하다 보니 100프로 이해하지 못 한채 결과까지만 내본 것 같습니다. 보완하고 싶은 점미리 미션을 진행하면서 이해를 100퍼센트 하고 싶습니다. 나아진 점강의를 이해하는 정도가 점점 나아지고 있는 것을 느낍니다.강의를 보면서 실습을 따라하는 것이 더욱 익숙해 졌습니다. 미션2, 3, 4솔직히 처음 미션 내용을 받고 나서 어떻게 진행해야 할지 감이 안 왔는데 생각해보고 조원들에게 도움도 받으면서 미션을 진행했습니다.100프로 이해하지 못하고 결과만 받기 위해 따라 한 미션도 있지만 그래도 강의 내용을 한 번 더 복기하면서 진행하니까 해당 기능들을 왜 사용하는 지는 감을 잡았습니다.
2025. 06. 10.
0
PVC/PV, Deployment, Service 이해하기[미션4]
1. PV, PVC1-1 API - 파일 생성http://192.168.56.30:31231/create-file-pod http://192.168.56.30:31231/create-file-pv1-2 Container 임시 폴더 확인 / Container 영구저장 폴더 확인 / master node 폴더 확인Container 임시 폴더 확인[root@k8s-master ~]# kubectl exec -n anotherclass-123 -it -- ls /usr/src/myapp/tmpContainer 영구저장 폴더 확인[root@k8s-master ~]# kubectl exec -n anotherclass-123 -it -- ls /usr/src/myapp/files/devmaster node 폴더 확인[root@k8s-master ~]# ls /root/k8s-local-volume/12311-3 Pod 삭제[root@k8s-master ~]# kubectl delete -n anotherclass-123 pod 1-4 API - 파일 조회http://192.168.56.30:31231/list-file-pod http://192.168.56.30:31231/list-file-pv==> 조회가 되던 두 파일 모두 조회가 되지 않습니다.1-5 hostPath 동작 확인 - Deployment 수정 후 [1-1~1-4] 실행아래 명령어로 Deployment yaml 파일 수정[root@k8s-master ~]# kubectl edit deployments.apps -n anotherclass-123 api-tester-1231 아래와 같이 Deployment 수정apiVersion: apps/v1 kind: Deployment metadata: namespace: anotherclass-123 name: api-tester-1231 spec: template: spec: nodeSelector: kubernetes.io/hostname: k8s-master containers: - name: api-tester-1231 volumeMounts: - name: files mountPath: /usr/src/myapp/files/dev - name: secret-datasource mountPath: /usr/src/myapp/datasource volumes: - name: files persistentVolumeClaim: // 삭제 claimName: api-tester-1231-files // 삭제 // 아래 hostPath 추가 hostPath: path: /root/k8s-local-volume/1231 - name: secret-datasource secret: secretName: api-tester-1231-postgresql API - 파일 생성http://192.168.56.30:31231/create-file-pod http://192.168.56.30:31231/create-file-pvContainer 임시 폴더 확인[root@k8s-master ~]# kubectl exec -n anotherclass-123 -it -- ls /usr/src/myapp/tmpContainer 영구저장 폴더 확인[root@k8s-master ~]# kubectl exec -n anotherclass-123 -it -- ls /usr/src/myapp/files/devmaster node 폴더 확인[root@k8s-master ~]# ls /root/k8s-local-volume/1231Pod 삭제 [root@k8s-master ~]# kubectl delete -n anotherclass-123 pod API 파일 조회http://192.168.56.30:31231/list-file-pod http://192.168.56.30:31231/list-file-pv==> list-file-pv 만 조회됨 2. Deployment2-1. RollingUpdate 하기 // 1) HPA minReplica 2로 바꾸기 (이전 강의에서 minReplicas를 1로 바꿔놨었음) kubectl patch -n anotherclass-123 hpa api-tester-1231-default -p '{"spec":{"minReplicas":2}}' // 1) 그외 Deployment scale 명령 kubectl scale -n anotherclass-123 deployment api-tester-1231 --replicas=2 // 1) edit로 모드로 직접 수정 kubectl edit -n anotherclass-123 deployment api-tester-1231 // 2) 지속적으로 Version호출 하기 (업데이트 동안 리턴값 관찰) while true; do curl http://192.168.56.30:31231/version; sleep 2; echo ''; done; // 3) 별도의 원격 콘솔창을 열어서 업데이트 실행 kubectl set image -n anotherclass-123 deployment/api-tester-1231 api-tester-1231=1pro/api-tester:v2.0.0 kubectl set image -n anotherclass-123 deployment/api-tester-1231 2-2. RollingUpdate (maxUnavailable: 0%, maxSurge: 100%) 하기아래 명령어 Deployment yaml 파일 수정[root@k8s-master ~]# kubectl edit deployments -n anotherclass-123 api-tester-1231 아래 내용과 같이 Deployment 수정apiVersion: apps/v1 kind: Deployment metadata: namespace: anotherclass-123 name: api-tester-1231 spec: replicas: 2 strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 25% -> 0% # 수정 maxSurge: 25% -> 100% # 수정==> 이렇게 하게 되면 Blue/Green과 같은 효과 낼 수 있습니다. ==> 따라서 두 버전이 번갈아 나오지 않을 것으로 예상됩니다. kubectl set image -n anotherclass-123 deployment/api-tester-1231 api-tester-1231=1pro/api-tester:v1.0.02-3. Recreate 하기아래 명령어 Deployment yaml 파일 수정[root@k8s-master ~]# kubectl edit deployments -n anotherclass-123 api-tester-1231 아래 내용과 같이 Deployment 수정apiVersion: apps/v1 kind: Deployment metadata: namespace: anotherclass-123 name: api-tester-1231 spec: replicas: 2 strategy: type: RollingUpdate -> Recreate # 수정 rollingUpdate: # 삭제 maxUnavailable: 0% # 삭제 maxSurge: 100% # 삭제==> 이렇게 하게 되면 업데이트 하면서 모든 Pod를 지웠다가 새 버전의 Pod를 생성한 뒤 서비스가 재시작 됩니다.kubectl set image -n anotherclass-123 deployment/api-tester-1231 api-tester-1231=1pro/api-tester:v2.0.02-4. Rollbackkubectl rollout undo -n anotherclass-123 deployment/api-tester-1231==> 이전 버전으로 롤백 3. Service 3-1. Pod 내부에서 Service 명으로 API 호출 [서비스 디스커버리]Version API 호출curl http://api-tester-1231:80/version3-2. Deployment에서 Pod의 ports 전체 삭제, Service targetPort를 http -> 8080으로 수정아래 두 명령어들로 Deployment와 Service yaml 파일 수정합니다.[root@k8s-master ~]# kubectl edit deployments -n anotherclass-123 api-tester-1231 [root@k8s-master ~]# kubectl edit service -n anotherclass-123 api-tester-1231 아래 내용으로 각각 수정합니다.apiVersion: apps/v1 kind: Deployment metadata: namespace: anotherclass-123 name: api-tester-1231 spec: template: spec: nodeSelector: kubernetes.io/hostname: k8s-master containers: - name: api-tester-1231 ports: // 삭제 - name: http // 삭제 containerPort: 8080 // 삭제 --- apiVersion: v1 kind: Service metadata: namespace: anotherclass-123 name: api-tester-1231 spec: ports: - port: 80 targetPort: http -> 8080 // 변경 nodePort: 31231 type: NodePort 3-3. 그리고 다시 Pod 내부에서 Service 명으로 API 호출curl http://api-tester-1231:80/version그래도 정상적으로 호출됩니다. 4. HPA4-1. 부하 발생3분 동안 부하 발생http://192.168.56.30:31231/cpu-load?min=3 4-2. 부하 확인아래 명령들로 확인kubectl top -n anotherclass-123 pods kubectl get hpa -n anotherclass-123왼쪽이 top / 오른쪽이 get hpa 4-3. [behavior] 미사용으로 적용아래 명령어로 HPA yaml 파일 수정kubectl edit -n anotherclass-123 hpa api-tester-1231-default아래와 같이 HPA 수정--- apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: namespace: anotherclass-123 name: api-tester-1231-default spec: behavior: # 삭제 scaleUp: # 삭제 stabilizationWindowSeconds: 120 # 삭제 4-4. 부하 발생http://192.168.56.30:31231/cpu-load // 2분 동안 10개의 쓰레드로 80% 부하 발생 // default : min=2, thread=10 4-5. 부하 확인아래 명령들로 확인kubectl top -n anotherclass-123 pods kubectl get hpa -n anotherclass-123왼쪽이 top / 오른쪽이 get hpa==> 보다 민감하게 Pod가 생성되는 것 확인 가능합니다.
쿠버네티스
・
일프로
2025. 06. 09.
1
Application 기능으로 이해하기 - Configmap, Secret [미션3]
▶ 응용1 : Configmap의 환경변수들을 Secret을 사용해서 작성하고, App에서는 같은 결과가 나오도록 확인해 보세요.쿠버네티스 대쉬보드에서 아래와 같이 Secret 생성(Configmap은 생략) apiVersion: v1 kind: Secret metadata: namespace: anotherclass-123 name: api-tester-1231-properties labels: part-of: k8s-anotherclass component: backend-server name: api-tester instance: api-tester-1231 version: 1.0.0 managed-by: dashboard stringData: spring_profiles_active: "dev" application_role: "ALL" postgresql_filepath: "/usr/src/myapp/datasource/dev/postgresql-info.yaml" 대쉬보드의 Secret에서 Configmap 환경변수 확인Deployment의 envFrom.secretRef 부분 업데이트아래 명령어로 configMapRef ==> secretRef로 변경kubectl edit -n anotherclass-123 deployments.apps api-tester-1231▶ 응용2 : 반대로 Secret의 DB정보를 Configmap으로 만들어보고 App을 동작시켜 보세요쿠버네티스 대쉬보드에서 아래와 같이 Configmap은 생성(Secret은 생략) apiVersion: v1 kind: ConfigMap metadata: namespace: anotherclass-123 name: api-tester-1231-postgresql labels: part-of: k8s-anotherclass component: backend-server name: api-tester instance: api-tester-1231 version: 1.0.0 managed-by: dashboard data: postgresql-info.yaml: | driver-class-name: "org.postgresql.Driver" url: "jdbc:postgresql://postgresql:5431" username: "dev" password: "dev123" 대쉬보드의 Configmap에서 Secret 환경변수 확인Deployment의 volumeMounts.name과 volumes 부분 업데이트아래 명령어로 수정kubectl edit -n anotherclass-123 deployments.apps api-tester-1231
쿠버네티스
・
일프로
2025. 06. 09.
0
Application 기능으로 이해하기 - Probe > 응용과제 [미션2]
▶ 응용1 : startupProbe가 실패 되도록 설정해서 Pod가 무한 재기동 상태가 되도록 설정해 보세요.사전작업Object 그려보며 이해하기 실습에서 진행한 인프라 코드들을 재사용하기 위해 배포한 오브젝트들을 kubectl 명령어로 삭제합니다.[root@k8s-master ~]# kubectl delete ns anotherclass-123[root@k8s-master ~]# kubectl delete pv api-tester-1231-filesstartupProbe가 실패하도록 만들기 위해 Deployment YAML 파일 내용을 아래와 같이 수정합니다.failureThreshold의 값을 기존 36에서 1로 변경합니다.startupProbe: httpGet: path: "/startup" port: 8080 periodSeconds: 5 failureThreshold: 1 # 이 부분 수정로그를 관찰하기 쉽도록 HPA minReplica 1로 바꿉니다.$ kubectl patch -n anotherclass-123 hpa api-tester-1231-default -p '{"spec":{"minReplicas":1}}'결과▶ 응용2 : 일시적 장애 상황(App 내부 부하 증가)가 시작 된 후, 30초 뒤에 트래픽이 중단되고, 3분 뒤에는 App이 재기동 되도록 설정해 보세요.(아래 API를 날리면 readinessProbe와 livenessProbe가 동시에 실패하게 됩니다) 사전작업응용 1. 에서 진행한 인프라 코드들을 재사용합니다. 2. 일시적 장애 상황(App 내부 부하 증가)가 시작 된 후, 30초 뒤에 트래픽이 중단되고, 3분 뒤에는 App이 재기동 되도록 Deployment YAML 파일 내용을 아래와 같이 수정합니다.livenessProbe 의 periodSeconds 값을 기존 10에서 60으로 변경합니다.startupProbe: httpGet: path: "/startup" port: 8080 periodSeconds: 5 failureThreshold: 10 # 1에서 10으로 다시 증가 readinessProbe: httpGet: path: "/readiness" port: 8080 periodSeconds: 10 failureThreshold: 3 livenessProbe: httpGet: path: "/liveness" port: 8080 periodSeconds: 60 # 이 부분 수정 failureThreshold: 3 1. 30초 뒤 트래픽 중단readinessProbe는 10초마다 체크하고, 3번 연속 실패해야 Ready가 false가 됩니다.10초 × 3 = 30초 후 서비스에서 Pod가 제외되어 트래픽이 중단됩니다.2. 3분 뒤 App 재기동livenessProbe는 60초마다 체크하고, 3번 연속 실패해야 Pod를 재시작합니다.60초 × 3 = 180초(3분) 후 컨테이너가 재시작합니다. 3. 일시적 장애사항 부여// 부하 증가 API - (App 내부 isAppReady와 isAppLive를 False로 바꿈) curl http://192.168.56.30:31231/server-load-on 2025-06-09 19:43:50 2025-06-09T10:43:50.764Z INFO 1 --- [nio-8080-exec-6] DefaultController : [SyStem] The system load has occurred 2025-06-09 19:43:55 2025-06-09T10:43:55.879Z INFO 1 --- [nio-8080-exec-7] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false # livenessProbe 실패 1회차 2025-06-09 19:44:05 2025-06-09T10:44:05.883Z INFO 1 --- [nio-8080-exec-8] DefaultService : [Kubernetes] livenessProbe is Failed-> [System] isAppLive: false 2025-06-09 19:44:05 2025-06-09T10:44:05.883Z INFO 1 --- [nio-8080-exec-9] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false 2025-06-09 19:44:15 2025-06-09T10:44:15.882Z INFO 1 --- [io-8080-exec-10] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false 2025-06-09 19:44:15 2025-06-09T10:44:15.895Z INFO 1 --- [nio-8080-exec-1] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false 2025-06-09 19:44:25 2025-06-09T10:44:25.884Z INFO 1 --- [nio-8080-exec-2] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false 2025-06-09 19:44:35 2025-06-09T10:44:35.878Z INFO 1 --- [nio-8080-exec-3] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false 2025-06-09 19:44:45 2025-06-09T10:44:45.884Z INFO 1 --- [nio-8080-exec-4] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false 2025-06-09 19:44:55 2025-06-09T10:44:55.885Z INFO 1 --- [nio-8080-exec-5] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false 2025-06-09 19:45:05 2025-06-09T10:45:05.879Z INFO 1 --- [nio-8080-exec-6] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false # livenessProbe 실패 2회차 2025-06-09 19:45:05 2025-06-09T10:45:05.880Z INFO 1 --- [nio-8080-exec-7] DefaultService : [Kubernetes] livenessProbe is Failed-> [System] isAppLive: false 2025-06-09 19:45:15 2025-06-09T10:45:15.885Z INFO 1 --- [nio-8080-exec-9] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false 2025-06-09 19:45:25 2025-06-09T10:45:25.883Z INFO 1 --- [nio-8080-exec-8] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false 2025-06-09 19:45:30 2025-06-09T10:45:30.803Z INFO 1 --- [io-8080-exec-10] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false 2025-06-09 19:45:35 2025-06-09T10:45:35.885Z INFO 1 --- [nio-8080-exec-1] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false 2025-06-09 19:45:45 2025-06-09T10:45:45.882Z INFO 1 --- [nio-8080-exec-2] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false 2025-06-09 19:45:55 2025-06-09T10:45:55.883Z INFO 1 --- [nio-8080-exec-3] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false # livenessProbe 실패 3회차 2025-06-09 19:46:05 2025-06-09T10:46:05.888Z INFO 1 --- [nio-8080-exec-5] DefaultService : [Kubernetes] livenessProbe is Failed-> [System] isAppLive: false 2025-06-09 19:46:05 2025-06-09T10:46:05.888Z INFO 1 --- [nio-8080-exec-4] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false 2025-06-09 19:46:05 2025-06-09T10:46:05.984Z INFO 1 --- [nio-8080-exec-7] DefaultService : [Kubernetes] readinessProbe is Failed-> [System] isAppReady: false2025-06-09 19:46:36 2025-06-09 19:46:36 . ____ _ 2025-06-09 19:46:36 /\\ / ___'_ __ (_)_ _ \ \ \ \ 2025-06-09 19:46:36 ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 2025-06-09 19:46:36 \\/ ___)| |_)| | | | | || (_| | ) ) ) ) 2025-06-09 19:46:36 ' |____| .__|_| |_|_| |_\__, | / / / / 2025-06-09 19:46:36 =========|_|==============|___/=/_/_/_/ 2025-06-09 19:46:36 :: Spring Boot :: (v3.1.0) 2025-06-09 19:46:36 2025-06-09 19:46:38 2025-06-09T10:46:38.590Z INFO 1 --- [ main] com.pro.app.AppApplication : Starting AppApplication v0.0.1-SNAPSHOT using Java 17.0.2 with PID 1 (/usr/src/myapp/app.jar started by root in /usr/src/myapp) 2025-06-09 19:46:38 2025-06-09T10:46:38.784Z INFO 1 --- [ main] com.pro.app.AppApplication : The following 1 profile is active: "dev" 4. API 실패 상태 확인// 외부 API 실패 [root@k8s-master ~]# curl http://192.168.56.30:31231/hello curl: (7) Failed to connect to 192.168.56.30 port 31231: Connection refused 5. 장애사항 제거// 부하 감소 API - (App 내부 isAppReady와 isAppLive를 True로 바꿈) curl http://192.168.56.30:31231/server-load-off ▶ 응용3 : Secret 파일(/usr/src/myapp/datasource/postgresql-info.yaml)이 존재하는지 체크하는 readinessProbe를 만들어 보세요.사전작업응용 1. 에서 진행한 인프라 코드들을 재사용합니다. 2. Secret 파일(/usr/src/myapp/datasource/postgresql-info.yaml)이 존재하는지 체크하도록 Deployment YAML 파일 내용을 아래와 같이 수정합니다. startupProbe: httpGet: path: "/startup" port: 8080 periodSeconds: 5 failureThreshold: 10 readinessProbe: exec: command: ["cat", "/usr/src/myapp/datasource/postgresql-info.yaml"] periodSeconds: 10 failureThreshold: 3 livenessProbe: httpGet: path: "/liveness" port: 8080 periodSeconds: 10 failureThreshold: 3 Readiness Probe 확인현재는 exec 속성으로 command를 날렸을 때 해당 경로에 파일이 있어 실패를 안하고 있기 때문에 이벤트가 안 찍히는 중입니다.Deployment YAML 파일 내용 가운데 exec 속성의 command를 존재하지 않는 파일을 찾도록 수정합니다.수정하고 나면 아래와 같이 Readiness Probe 실패 이벤트 확인 가능합니다.
2025. 06. 08.
1
쿠버네티스 어나더 클래스(지상편)-인프런 일프로강사님 / 2주차 발자국
강의 수강일주일 간 학습한 내용Application 기능으로 이해하기 - Probe쿠버네스의 오브젝트 POD 의 생성 이후의 흐름을 어플리케이션이 동작하는 과정과 비교하면서 쿠버네티스에서는 어떻게 동작하는지 배웠습니다. 쿠버네티스에서는 어플리케이션에 동작하는 기능들을 Probe와 상호작용 하며 기능들이 잘 올라왔고 제대로 동작하는지 확인합니다.Probe 가운데는 Startup Probe, Readiness Probe, Liveness Probe가 각각의 기능을 갖고 어떤 순서대로 동작하는지 이해했습니다.Application 기능으로 이해하기 - Configmap, Secret강의를 배우기 전부터 이름에서 짐작한대로 예상한 기능을 하는 오브젝트들 이었습니다.Configmap은 Pod에 환경변수가 들어가서 쿠버네티스 내에서 제대 동작을 하도록 하는 기능을 하고Secret은 그 중에서 민감데이터들을 처리하는 기능을 하는 오브젝트입니다.물론 Secret은 조금만 검색해보면 Base64로 인코딩되는 것을 모두가 알기 때문에 쉽게 복호화 되므로 보안의 암호화 역할을 한다고는 볼 수 없습니다.Application 기능으로 이해하기 - PV/PVC, Deployment, Service, HPAPV/PVC 오브젝트는 컨테이너에서 생성되는 데이터들을 따로 저장하는 기능을 하고(만약 사용하지 않을 시 Pod가 죽으면 속한 데이터들이 전부 날라감)Deployment 오브젝트는 이름에서 알 수 있듯이 배포와 관련된 기능을 하는데 템플릿으로 버전을 관리하고, replicas로 만들어는 Pod 수를 지정하고, 전략의 타입에 따라 업데이트하면서 Pod가 생성되고 죽는 수준을 조절 합니다.Service 오브젝트는 Pod로 접근시 Service 이름 및 포트 번호를 지정하여 연결을 하는 기능을 하고 Pod의 IP도 관리합니다.HPA 오브젝트는 어플케이션이 배포되고 난 다음 Pod의 과부화에 따른 자동 스케일링 되는 수준을 정하여 Pod 수가 늘어나고 줄어드는 기능을 조절하는 오브젝트 입니다. Component 동작으로 이해하기앞선 스프린트 1에서 배운 내용들을 한번에 정리하여 다시 리마인드 되는 수업이었습니다.아직 확실히 이해하지 못한 개념들을 파악하게 됐습니다.다음 스프린트 2에서 배울 내용들을 어느 정도 예상하게 되는 수업이었습니다.문제가 발생하게 되면 어떤 순서로 파악하고 어떤 명령어를 사용하는지 실습을 통해 알 수 있었습니다.회고아쉬운 점발자국 토요일에 제출하는게 목표였으나 이번에도 일요일인 점..미션도 주말에 하고 싶었으나 아직 진행 중 입니다.보완하고 싶은 점복습을 이번 주는 제대로 못 했지만 다음 주는 완벽하게 하고 싶습니다.아직 100퍼센트 숙지하지 못한 내용을 파악하여 해당 개념들은 다시 강의를 돌려보고 이해하도록 하겠습니다.나아진 점그래도 2주차라 그런지 온라인 강의를 듣는 것에 익숙해졌습니다.더불어 용어들에 점점 친숙해져서 그런지 강의를 이해할 수 있는 내용이 많아진 것 같습니다. (어려워진 내용에 비해서.. ㅎㅎ)
쿠버네티스
・
일프로
2025. 06. 03.
1
쿠버네티스 무게감 있게 설치하기 > 구간별 상태 확인 [미션1]
저는 우선 쿠버네티스 설치를 우분투 환경에서 진행했습니다.1. 내 PC에서 프로그램 및 자원 확인[1-1] 내 PC 네트워크 확인[1-2] 내 PC 자원 확인[1-3] VirtualBox 설치 버전 확인[1-4] Vagrant 설치 버전 확인[1-5] 원격접속(MobaXterm) 설치 버전 확인원격접속은 기본 터미널로 진행했습니다. 2. VirtualBox[2-1] VirtualBox VM 확인[2-2] 내 VM에 적용된 NAT 확인[2-3] 내 VM에 적용된 Host-Only Network 확인[2-4] VirtualBox Host-Only cidr 확인3. 가상머신 [3-1] Rocky Linux 버전 확인[3-2] Hostname 확인[3-3], [3-4] Network 확인[3-5] 자원(cpu, memory) 확인[4] Rocky Linux 기본 설정[5] kubeadm 설치 전 사전작업[6] 컨테이너 런타임 설치[6-1] 컨테이너 런타임 설치 전 사전작업 [6-2] 컨테이너 런타임 (containerd 설치)▶ docker repo 설정 확인▶containerd 설치 확인▶설치 가능한 버전의 containerd.io 리스트 확인[6-3] 컨테이너 런타임 (CRI활성화)▶ cri 활성화 설정 확인▶ kubelet cgroup 확인 (configmap)▶ kubelet cgroup 확인 (kubelet)[7] kubeadm 설치▶ repo 설정 확인▶ SELinux 설정 확인▶ kubelet, kubeadm, kubectl 패키지 설치▶ 설치 가능한 버전의 kubeadm 리스트 확인[8] kubeadm으로 클러스터 생성[8-1] 클러스터 초기화 (Pod Network 세팅)▶ 클러스터 상태 확인# master node 상태확인 [root@k8s-master ~]# kubectl get node # pod network cidr 설정 확인 [root@k8s-master ~]# kubectl cluster-info dump | grep -m 1 cluster-cidr # apiserver advertise address 적용 확인 [root@k8s-master ~]# kubectl cluster-info # kubernetes component pod 확인 [root@k8s-master ~]# kubectl get pods -n kube-system[8-2] kubectl 사용 설정▶ 인증서 설정 확인[8-3] CNI Plugin 설치 (calico)▶ calico pod 설치 및 pod network cidr 적용 확인# Calico Pod 상태 확인 [root@k8s-master ~]# kubectl get -n calico-system pod [root@k8s-master ~]# kubectl get -n calico-apiserver pod # Calico에 pod network cidr 적용 확인 [root@k8s-master ~]# kubectl get installations.operator.tigera.io default -o yaml | grep cidr[8-4] Master에 pod를 생성 할 수 있도록 설정▶ Master Node에 Taint 해제 확인[9] 쿠버네티스 편의 기능 설치[9-1] kubectl 자동완성 기능▶ kubectl 기능 설정 확인[9-2] Dashboard 설치▶ dashboard 설치 확인[9-3] Metrics Server 설치▶ metrics server 설치 확인
쿠버네티스
・
일프로
・
지상편
2025. 06. 01.
1
쿠버네티스 어나더 클래스(지상편)-인프런 일프로강사님
강의 수강일주일 간 학습한 내용컨테이너 한방정리리눅스부터 컨테이너 기술, 그리고 쿠버네티스까지 기초적인 CS 지식부터 강의의 목표가 되는 쿠버네티스 기술까지 차근차근 설명 해주셨습니다.비전공자들도 이해할 수 있게 역사부터 그냥 넘어갈 수 있는 용어 및 기술들까지 설명 해주셔서 엄청나게 많은 용어 및 기술들에 대해 조금은 더 이해하기 쉬웠습니다.쿠버네티스 무게감있게 설치하기쉽게 설치하는 방법으로 우선은 모든 환경에서 설치가 됐습니다.이후에 각각의 설치 단계마다 자세하게 설명 해주셔서 왜 그렇게 설치를 했고 각각의 옵션들은 무엇을 의미하는지 알려주셨습니다.덕분에 나중에 해당 스크립트 및 설치 방법으로 다른 환경에서 또는 시간이 지나서 설치를 하게 되었을 때 문제가 생겨도 스스로 해결할 수 있을 것 같은 자신감이 생겼습니다.설치 복습으로 미션을 진행하면서 내 환경에 제대로 설치가 됐는지 확인할 수 있었습니다.실무에서 쿠버네티스가 정말 편한 이유개발을 해본 적이 없는 비전공자라 강의에서 진행한 수업 내용을 토대로 해당 쿠버네티스 기능을 사용한다는 것이 얼마나 대단한 것인지 크게 와닿지는 않았습니다.간단하게 설치를 한 것 만으로도 가상머신 모니터링이 쉽고 보기 좋게 나오는 것이 신기했습니다.아직 Loki-Stack 설치 시 "CrashLoopBackOff" 상태가 나오는 중이라 해당 문제 해결 중에 있습니다.하지만 인프라를 매번 구축할 시에 수동으로 코드를 입력할 필요가 없고 자동화 시키는 것이 얼마나 편하고 위험성을 낮추는 것인지는 알기 때문에 쿠버네티스의 장점을 느낄 수 있는 시간이었습니다.강사님께서 말씀해주신 대로 여러 기술들이 있고 너무 방대하지만 하나씩 필요에 의할 때 차근차근 배워나가도록 하겠습니다.Object 그려보며 이해하기쿠버네티스의 다양한 Object들에 대해 알게 되는 시간이었습니다.쿠버네티스에서 보편적으로 쓰이는 Labels, Selector, Naming에 대해서도 조금은 익숙해졌습니다. 미션1. 쿠버네티스 무게감 있게 설치하기 > 구간별 상태 확인https://cafe.naver.com/f-e/cafes/30725715/articles/24?boardtype=L&menuid=13&referrerAllArticles=false&page=2https://cafe.naver.com/f-e/cafes/30725715/articles/21?boardtype=L&menuid=13&referrerAllArticles=false&page=2위의 링크들을 참조하여 제 환경에서 설치한 프로그램들이 제대로 설치됐는지 확인하는 시간을 가졌습니다.현재 미션1에서 확인해야 하는 내용들은 전부 되는 것으로 확인했으나 kubectl get pods -n loki-stack 명령어로 Loki-Stack 설치 확인 시 아래와 같이 나오는 상태라 문제 해결 과정 중에 있습니다.회고아쉬운 점이번 주가 온라인 강의 첫 주라 그런지 익숙하지 않아서 조금은 밀렸고, 미루는 제 자신이 아쉬웠습니다.복습하면서 정리를 하는데 어려운 내용이나 이해하기 쉽지 않은 개념이 나오면 정리하는데 어려움이 생기고 깔끔하게 정리하지 못한 점이 아쉽습니다.백프로 이해하지 못하는 개념들이 생겨서 아쉽습니다.보완하고 싶은 점강의가 밀리지 않고 제때 제때 수강하고 복습하는 시간을 갖고 싶습니다.복습한 내용 정리할 때 나중에 시간이 지나서 볼 때도 바로 이해할 수 있도록 정리하고 싶습니다.이해하지 못한 내용은 다시 강의를 돌려보고 100프로 습득하도록 해보겠습니다. 혼자서 쉽지가 않다면 스터디원들에게 도움을 청하겠습니다.
쿠버네티스
・
워밍업클럽
・
일프로강사님
・
지상편