월 66,000원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
강의 흐름 이상
섹션 4 쿠버네티스 워크로드 - 4-1) 포드 디스크립터 작성강의에서kubectl port-forward 가 "해본적 없는데 해본적 있죠?" 하면서 나옵니다.또한 kubectl logs 도 그렇습니다.마치 순서가 바뀌었거나, 강의 내용이 추가/삭제하면서 흐름이 끊긴거 같습니다. 로드맵 얘기가 아닙니다. 강의를 처음부터 쭉 진행했을때 중간에 맥락이 끊긴거처럼 느껴진다는 것입니다.
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
4 쿠버네티스 워크로드에서부터 갑자기
섹션 4 쿠버네티스 워크로드 - 4-1) 포드 디스크립터 작성강의에서 kubectl port-forward 가 해본적 없는데 해본적 있죠 하면서 나옵니다. 또한 kubectl logs 도 그렇습니다. 무언가 강의 순서가 꼬인 것 같은데 어떤순서로 강의를 수강해야하나요?
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
영상이 나오지 않습니다.
해당 영상인 "한 포드에 멀티 컨테이너" 영상과 이 다음 영상이 나오지 않습니다.저만 그런 것이 아니고 다른 수강생도 2개의 영상이 나오지 않는 것으로 확인되었습니다. 왜 그런지 사유를 알 수 있을까요?
- 해결됨데브옵스(DevOps)를 위한 쿠버네티스 마스터
kubeadm init 실패(+join할 때도 참고)
sudo kubeadm init명령어를 입력했는데 다음과 같은 에러가 발생합니다.ttasjwi20240228@master-1:~$ sudo kubeadm init [init] Using Kubernetes version: v1.29.2 [preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR CRI]: container runtime is not running: output: time="2024-03-04T06:52:20Z" level=fatal msg="validate service connection: validate CRI v1 runtime API for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService" , error: exit status 1 [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher이런 문제가 발생하네요. 검색해보면 2020년 containerd github에 이런 증상에 관한 이슈가 올라와져있습니다.https://github.com/containerd/containerd/issues/4581이 이슈의 답변에는 이런 내용이 있습니다.containerd.io 패키지에 의해 설치된 config.toml 파일에는 disabled_plugins = ["cri"]라는 줄이 있는데, 이것이 문제를 일으킨 것으로 보입니다. 이 문제를 해결하려면 다음 명령을 실행하시면 됩니다.sudo rm /etc/containerd/config.toml sudo systemctl restart containerd sudo kubeadm init혹시 워커노드에서 join할 때도 동일한 문제 생기면sudo rm /etc/containerd/config.toml sudo systemctl restart containerd이 명령을 워커노드에 입력해봅시다
- 해결됨데브옵스(DevOps)를 위한 쿠버네티스 마스터
2024년 3월 4일 기준 설치
아래에 23년 당시 설치방법을 올리신 분의 것으로도 잘 안 되서... 그 사이에 또 바뀌었나 싶어서 노션 링크의 공식 문서를 보고 따라했습니다만 apt 명령으로 kubelet, kubeadm, kubectl이 설치가 안 되는 문제가 있습니다. 노션 링크의 공식문서는 한국어 문서였고, 최신화가 안 되어있던 것입니다. 영어 문서를 봐야합니다. 현재 공식문서에서는 이런 말이 나와있습니다. Note: The legacy package repositories (apt.kubernetes.io and yum.kubernetes.io) have been deprecated and frozen starting from September 13, 2023. Using the new package repositories hosted at pkgs.k8s.io is strongly recommended and required in order to install Kubernetes versions released after September 13, 2023. The deprecated legacy repositories, and their contents, might be removed at any time in the future and without a further notice period. The new package repositories provide downloads for Kubernetes versions starting with v1.24.0.apt.kubernetes.i and yum.kubernetes.io레거시 패키지 리포지토리 deprecatedapt.kubernetes.io and yum.kubernetes.io2023년 8월 13일 이후 릴리즈되는 새로운 쿠버네티스 버전을 설치하기 위해서는 새로운 패키지 리포지토리를 써라http://pkgs.k8s.io새로운 패키지 리포지토리는 1.24.0 ~ 이후의 버전을 지원 이런 내용이 한국어 문서에는 반영이 안 됐습니다. 해당 문서에서는 1.29.0을 설치하기 위해 다음을 하라고 합니다. apt 패키지 인덱스를 업데이트하고 Kubernetes apt 저장소를 사용하는 데 필요한 패키지를 설치하십시오: sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gpg Kubernetes 패키지 저장소의 공개 서명 키를 다운로드하십시오. 모든 저장소에 동일한 서명 키가 사용되므로 URL에서 버전을 무시할 수 있습니다:(우분투 20.04에서는 sudo mkdir -p -m 755 /etc/apt/keyrings 명령어를 입력해야합니다)# If the folder `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below. # sudo mkdir -p -m 755 /etc/apt/keyrings curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg 적절한 Kubernetes apt 저장소를 추가하십시오. 이 저장소에는 Kubernetes 1.29에 대한 패키지만 있으므로, 다른 Kubernetes 마이너 버전을 사용하는 경우 URL에서 Kubernetes 마이너 버전을 원하는 버전에 맞게 변경해야 합니다(설치할 Kubernetes 버전의 문서를 읽고 있는지도 확인해야 합니다).# This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list apt 패키지 인덱스를 업데이트하고 kubelet, kubeadm 및 kubectl을 설치하고 버전을 고정하십시오:sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl 결론바로 위 내용을 그대로 적용하신다면 아래 내용을 복사 붙여넣기 하시면 돼요. cat <<EOF > kube_install.sh # /etc/apt/keyrings 폴더 생성 및 권한 부여 sudo mkdir -p -m 755 /etc/apt/keyrings # 1. apt 패키지 색인을 업데이트하고, 쿠버네티스 apt 리포지터리를 사용하는 데 필요한 패키지를 설치한다. sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl gpg # 2. 구글 클라우드의 공개 사이닝 키를 다운로드 한다. sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg # 3. 쿠버네티스 apt 리포지터리를 추가한다. echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list # 4. apt 패키지 색인을 업데이트하고, kubelet, kubeadm, kubectl을 설치하고 해당 버전을 고정한다. sudo apt-get update sudo apt-get install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl EOF sudo bash kube_install.sh kubeadm version실행 후 버전 확인을 해보시면 됩니다 지금 자료는 2024.03.04 기준 공식문서(영어<- 중요) 자료고내일 당장 바뀔 수도 있습니다. 제가 지금 올린 내용을 믿으시지 마시고 일단 먼저 공식문서 (영어 <- 중요)를 참고하세요!
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
loadbalancer 문의 드립니다.
로컬 우분투 환경에서는 외부 IP 가 PENDING 상태에서 변하지 않습니다.꼭 실습환경은 구글크라우드 환경에서 해야 하는지, 아니면로컬환경에서는 LoadBalancer를 사용하지 못하는건지,못하면 다른 방법은 없는 건지 궁금합니다.참고로 우분투에서 로드밸랜서를 만들지는 못하나요?
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
NodePord local 환경에서 안됨
안녕하세요우분투 22.04에서 cilium환경 설정이 안되어서 우분투 20.04로 다시 설치해서 사용하고 있습니다.저는 로컬환경에서 우분투 20.04 라이브서버 4대마스터 1대 워커 3대 노드포트 서비스 실습을 하면 방화벽 30001를 마스터에서 허용해도 curl ~~ 하면 curl: (7) Failed to connect to 175.207.200.124 port 30001: Connection refused로컬환경에서는 nodePort로 어떻게 하면 사용이 가능할까요?참고로 공유기 포트는 다 열어져 있습니다.➜ yaml kubectl get nodes -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIMEstarcoex-first Ready control-plane 6d18h v1.28.2 192.168.10.4 <none> Ubuntu 20.04.6 LTS 5.4.0-172-generic containerd://1.6.28starcoex-four Ready <none> 6d18h v1.28.2 192.168.10.102 <none> Ubuntu 20.04.6 LTS 5.4.0-172-generic containerd://1.6.28starcoex-second Ready <none> 6d18h v1.28.2 192.168.10.100 <none> Ubuntu 20.04.6 LTS 5.4.0-172-generic containerd://1.6.28starcoex-three Ready <none> 6d17h v1.28.2 192.168.10.101 <none> Ubuntu 20.04.6 LTS 5.4.0-172-generic containerd://1.6.28 ➜ yaml kubectl get svc -o wideNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTORhttp-go-svc NodePort 10.110.165.249 <none> 80:30001/TCP 15m app=http-gokubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18h <none> 공유기 외부 ip175.207.200.124, 112.184.55.51, 112.184.55.52, 112.184.55.57
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
kubectl apply 와 create 차이점
안녕하세요.강의들 듣다 보면 지금까지는 pod를 생성할때 kubectl create ~~ 했는데지금은 kubectl apply ~~ 차이점이 있을까요?
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
서비스 DNS 연습문제 중 마지막 요청 실패 질문있습니다 (feat. 서비스 생성 실패 해결방법)
마지막 http-go 파드에서 blue 네임스페이스에 있는 서비스에 요청 실패 에러가 발생합니다.해결하려고 많은 시도를 했지만 결국 실패했습니다.저는 wsl에서 Ubuntu 환경을 사용중입니다. (__)에러 상황을 이미지로 보여드립니다.이전 강의에서 ingress 테스트에도 관련하여 에러 상황이 있었는데 ingress IP로 요청을 보내면 된다는 글을 보고 잘 해결했습니다.그때를 떠올려 다양하게 ip를 바꿔가며 시도해보았지만 실패하네요.그리고 네임스페이스간 통신을 위해 NetworkPolicy도 설정해보았지만 먹히지 않았습니다.이유가 뭘까요...?---이외로 중반부에 에러가 있었던 부분을 해결한 내용도 다른 분들이 도움이 될까 올려 봅니다.4:18 쯤에 하는 expose 명령이 되지 않는 분들그리고 에러 문구가error: couldn't find port via --port flag or introspection인 분들을 위한 해결 방법입니다.초반부에 강사님께서 디플로이먼트를 생성할 때 port를 제거하라는 자막이 나옵니다.이때 port를 지정하지 않아 위와 같은 상황이 발생하는 것인데요.저는 그냥 port 옵션을 넣어서 해결했습니다.이에 대한 참고 문헌입니다.https://itecnote.com/tecnote/linux-exposing-the-hello-minikube-service-fails-to-find-a-port/kubectl create deploy pod-jenkins --image=jenkins --port=8080 --dry-run=client -o yaml -n blue >> blue-jenkins-svc-deploy kubectl create -f blue-jenkins-svc-deploy.yaml kubectl expose deploy pod-jenkins --name srv-jenkins --dry-run=client -o yaml -n blue >> blue-jenkins-svc-deploy.yaml
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
master init error
안녕하세요. 열심히 열공 하고 있습니다.저는 컴퓨터 환경이 우분투 데스크탑 서버 22.04 두대우분투 라이브 서버 두대 이렇게 운영중에 있습니다.kubernetes master init 에러 각 각 4대의 공유기로 따로 사설 Ip로 나가고 있습니다.몇가지 궁금한 점 1. 4대의 pc가 내부 ip로 연결이 안 되어 있습니다.(랜 카드을 두개 설치해서 각각 내부 ip로 연결이 되어야 하는지 궁금합니다.)2. Docker 서비스를 stop에서 사용해야 하는지 아니면 별개로 그냥 사용해도 되는지 궁금합니다.3. 우분투 데스크탑 서버 22.04 두대에 설치을 하면 똑같은 kubernetes master init 에러 error execution phase addon/coredns: couldn't retrieve DNS addon deployments: Get "https://192.168.0.4:6443/apis/apps/v1/namespaces/kube-system/deployments?labelSelector=k8s-app%3Dkube-dns": net/http: request canceled (Client.Timeout exceeded while awaiting headers)To see the stack trace of this error execute with --v=5 or higher이 메세지가 출력됩니다.4. kubeadm reset도 여러번 해봤습니다.5. 공유기 포트포워딩 8080, 6443, 모든 포트 개방 DMZ도 활성화 했습니다.
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
gasbugs/http-go 이미지 에러
gasbugs/http-gogasbugs/http-go:v1gasbugs/http-go:v2gasbugs/http-go:v3 관련 이미지를 풀받으면 에러가 있거나 도커허브에 없습니다. 옛날강의 인가요?
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
GKE 질문입니다
안녕하세요, 강사님현재 GKE에서 실습 중인데 GKE에서 팟을 실행한 다음 로컬에서 curl로 요청을 보내거나 웹브라우저로 접근하려고하는데, curl로 요청하거나 웹브라우저로 접근하면 무한로딩만 걸려서 질문드립니다. IP는 클러스터 정보에 있는 외부엔트포인트로 접근했습니다.아래와 같이 jenkins.yaml을 만들어서 apply를 했습니다.읽어주셔서 감사합니다. jenkins.yaml:apiVersion: v1 kind: Podmetadata: name: my-pod labels: app: MyAppspec: containers: - name: my-container image: jenkins/jenkins ports: - containerPort: 80
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
worker에서 join할 때 오류발생
로그를 읽어보니 컨테이너 런타임이 running 상태가 아니라는데, containerd를 시작한 다음에 해도 오류가 발생하며 join이 안됩니다. 나름 구글링해봤는데 해결을 못해서 질문드립니다..wjddndla1013@worker-2:~$ sudo systemctl start containerd wjddndla1013@worker-2:~$ sudo kubeadm join 10.138.0.2:6443 --token 6b4i88.fu2iiiipo41ldiww --discovery-token-ca-cert-hash sha256:232f88032469356177301165974b023033cde407848858921ddcdda262aee2c7 [preflight] Running pre-flight checkserror execution phase preflight: [preflight] Some fatal errors occurred: [ERROR CRI]: container runtime is not running: output: time="2024-01-16T09:30:11Z" level=fatal msg="validate service connection: CRI v1 runtime API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService", error: exit status 1[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...To see the stack trace of this error execute with --v=5 or higher
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
포트포워딩 및 nfs 관련
안녕하십니까 강사님nfs 볼륨을 연결하는 실습중 잘 작동하지 않아 의문이 들어 질문드립니다.저는 현재 gcp 환경에서 실리움 및 containerd 환경에서 실습중인데 워커 노드에서 성공적으로 nfs 서버를 만든다음 마스터 노드에서 nfs yaml 파일을 만들어 포드를 생성했습니다. 여기서 포드는 성공적으로 생성되나 kubectl port-forward nfs-httpd 8888:8080 후wget -O - http://127.0.0.1:8888명령으로 확인해보면 E0104 04:41:42.760571 136525 portforward.go:409] an error occurred forwarding 8888 -> 8080: error forwarding port 8080 to pod 51c205bfd168fbe728ebd76816fec7efbce3381c6d3df46fb6637642e100741a, uid : failed to execute portforward in network namespace "/var/run/netns/cni-59c489b6-f657-8c67-0da9-8cb1e0c7fbe2": failed to connect to localhost:8080 inside namespace "51c205bfd168fbe728ebd76816fec7efbce3381c6d3df46fb6637642e100741a", IPv4: dial tcp4 127.0.0.1:8080: connect: connection refused IPv6 dial tcp6: address localhost: no suitable address found error: lost connection to pod 해당 에러가 발생합니다. 처음 nfs 서버를 만들때 gcp 에서 할당받은 내부 ip 를 사용해서 마운트를 하였는데 혹시IPv4 address for cilium_host: 10.0.1.229IPv4 address for ens4: 10.138.0.2밑에 ip 가 아닌 위의 ip 로 마운트를 해야하나요..?
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
sessionAffinity 작동관련 질문
강사님 강의 잘 듣고 있습니다.강사님 강의중 궁금한점이 생겨 질문 드립니다.우선 강의중 sessionAffinity 필드를 ClientIp 로 고쳐도 로드밸런싱 되는 현상을kubectl edit configmap -n kube-system cilium-configkube-proxy-replacement: strict해당 방법으로 해결하였습니다, 여기서 궁금증이 생겼는데 쿠버네티스 문서를 확인해보면 clusterip 의 작동원리가 그림으로 설명 되어 있습니다. 해당 그림에선 api서버가 kube-proxy 를 통해 clusterip 로 들어와 로드밸런싱이 작동되는데kube-proxy-replacement 해당 필드는 실리움이 kube-proxy 를 대체하거나 혹은 kube-proxy 가 정상 작동하는 것으로 알고있습니다. 그렇다면 해당 필드가 false 라면 kube-proxy 는 sessionAffinity 필드가 ClientIP 더라도 외부에서 들어오는 트래픽을 로드밸런싱 하는것인가요? 근본적인 동작 원리가 궁금하여 질문드립니다.
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
GCP 환경 실습
현재 vm 이 아닌 GCP 환경에서 실습을 진행중입니다. 와중에 마스터 노드에 jenkins 포드를 생성하고 외부에서 접근할때, 마스터 노드가 띄워져있는 인스턴스에서가 아닌 제 정말 로컬에서 접근하고자 합니다. 하여 GCP 에서 할당해준외부ip:8888 로 접근하려고 하자 접근이 잘 되지 않습니다. ping 을 보내어봐도 핑은 잘 가는것으로 보아 서버ip 는 잘 열려있는데 포트가 막힌것인지 궁금합니다. 혹시 이게 맞다면 따로 방화벽룰 을 설정한다거나 해야할까요?
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
EXTERNAL-IP 가 전부 <none> 으로 뜨는데 왜 이런건가요?
Google Cloud - Computer Engine - VM 인스턴스 환경에서 master-1, worker-1, worker-2 를 만들어서 실습을 하고있는데 쿠버네티스 네트워크 - 노드포트로 서비스하기 실습 강의에서 http-go-np.yaml 을 만들어 kubectl create -f http-go-np.yaml 을 실행했는데 kubectl get nodes -o wide 로 확인해보니 EXTERNAL-IP 가 전부 <none> 으로 뜨는데 왜 이런건가요?
- 해결됨데브옵스(DevOps)를 위한 쿠버네티스 마스터
docker를 설치한 VM을 master로 사용해야하나요?
저는 VirtualBox를 사용해서 VM환경을 구성하여 실습을 진행하고 있습니다.현재 섹션 6. 쿠버네티스 네트워크의 강의 중 쿠버네티스 네트워크 - 컨테이너 간의 인터페이스 공유 방법을 들었는데 강의 중 docker를 통해 컨테이너 간의 인터페이스를 공유하는 것을 보여주셨습니다.VM 환경 구성 중 master를 섹션 1에서 도커를 사용할 때 사용한 VM으로 사용 해야하나요?섹션 2부터 현재까지 docker를 사용하지 않아서 구성한 환경에는 docker가 없기에 질문 드립니다.
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
http-go 이미지는 몇 강에서 확인할 수 있을까요?
섹션 4에서 포드 디스크립터 작성을 보는 중에 go-http-pod.yaml 파일을 작성하셨는데kubectl create -f go-http-pod.yaml 명령어 실행 후kubectl get pod http-go를 실행하니 Status가 ImagePullBackOff 로 나옵니다.강의 영상에서는 저번에 만들어두셨다고 하셨는데 어떤 강의에서 이미지를 확인할 수 있을까요?
- 미해결데브옵스(DevOps)를 위한 쿠버네티스 마스터
왜 갑자기 master가 등장했는지 ; 어느 강의를 따라가면 Master로 접속이 가능한가요 Gcp로 밑에 강의들을 따라가면되나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.