묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
베이그런트 질문
개인 사정으로 이전 강좌를 못 듣고 바로 해당 강좌를 듣게 되었습니다. 그런데 첫 시작부터 베이그런트에 대해 말씀하셔서... 정확히 베이그런트가 무엇인지 궁금합니다. 혹시 괜찮으시면 간단하게 설명 부탁드려도 될까요..?
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
CRI docker 와 containerd 차이점
강의 9분대에서 실습하면서 궁금한 점이 있어 질문드립니다! k8s 에서 docker 를 CRI로 사용할 때 파드를 배포한 후에 docker 를 중지하고 curl 접속을 하면 접속이 안되고 containerd 를 CRI로 사용할 때 파드를 배포한 후에 containerd 를 중지하고 curl 접속을 하면 접속이 되는데 무슨 차이일까요??docker와 containerd 의 어떤 차이점이 있어서 그런걸까요? 알려주시면 감사하겠습니다!![root@m-k8s ~]# k create deployment sy-deploy --image=nginx deployment.apps/sy-deploy created [root@m-k8s ~]# k get po NAME READY STATUS RESTARTS AGE static-web-m-k8s 1/1 Running 1 (156m ago) 153m sy-deploy-84f55cfcf9-6twr9 1/1 Running 0 3s [root@m-k8s ~]# k scale deployment sy-deploy --replicas=6 deployment.apps/sy-deploy scaled [root@m-k8s ~]# k get po NAME READY STATUS RESTARTS AGE static-web-m-k8s 1/1 Running 1 (157m ago) 153m sy-deploy-84f55cfcf9-6twr9 1/1 Running 0 30s sy-deploy-84f55cfcf9-9jxwz 0/1 ContainerCreating 0 2s sy-deploy-84f55cfcf9-dd7pg 0/1 ContainerCreating 0 2s sy-deploy-84f55cfcf9-jzsrv 0/1 ContainerCreating 0 2s sy-deploy-84f55cfcf9-l5qpr 0/1 ContainerCreating 0 2s sy-deploy-84f55cfcf9-zl9zt 0/1 ContainerCreating 0 2s [root@m-k8s ~]# k get po -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES static-web-m-k8s 1/1 Running 1 (157m ago) 153m 172.16.171.71 m-k8s <none> <none> sy-deploy-84f55cfcf9-6twr9 1/1 Running 0 46s 172.16.221.156 w1-k8s <none> <none> sy-deploy-84f55cfcf9-9jxwz 1/1 Running 0 18s 172.16.132.30 w3-k8s <none> <none> sy-deploy-84f55cfcf9-dd7pg 1/1 Running 0 18s 172.16.132.31 w3-k8s <none> <none> sy-deploy-84f55cfcf9-jzsrv 1/1 Running 0 18s 172.16.221.157 w1-k8s <none> <none> sy-deploy-84f55cfcf9-l5qpr 1/1 Running 0 18s 172.16.103.162 w2-k8s <none> <none> sy-deploy-84f55cfcf9-zl9zt 1/1 Running 0 18s 172.16.103.161 w2-k8s <none> <none> # containerd 중지 [root@w1-k8s ~]# systemctl stop containerd [root@w1-k8s ~]# systemctl status containerd ● containerd.service - containerd container runtime Loaded: loaded (/usr/lib/systemd/system/containerd.service; enabled; vendor preset: disabled) Active: inactive (dead) since Sat 2023-10-14 23:49:00 KST; 8s ago Docs: https://containerd.io [root@m-k8s ~]# k get po -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES static-web-m-k8s 1/1 Running 1 (158m ago) 154m 172.16.171.71 m-k8s <none> <none> sy-deploy-84f55cfcf9-6twr9 1/1 Running 0 75s 172.16.221.156 w1-k8s <none> <none> sy-deploy-84f55cfcf9-9jxwz 1/1 Running 0 47s 172.16.132.30 w3-k8s <none> <none> sy-deploy-84f55cfcf9-dd7pg 1/1 Running 0 47s 172.16.132.31 w3-k8s <none> <none> sy-deploy-84f55cfcf9-jzsrv 1/1 Running 0 47s 172.16.221.157 w1-k8s <none> <none> sy-deploy-84f55cfcf9-l5qpr 1/1 Running 0 47s 172.16.103.162 w2-k8s <none> <none> sy-deploy-84f55cfcf9-zl9zt 1/1 Running 0 47s 172.16.103.161 w2-k8s <none> <none> [root@m-k8s ~]# curl 172.16.221.156 <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
-
미해결실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
istio란
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.[질문 하기] 7.4.프로메테우스 블랙박스 모니터링 수업에서 istio 설명을 그림쿠버에서 다루어서 넘어갔는데, 저는 그림쿠버를 구매하지 않아 이해가 잘 되지 않습니다. 개략적으로 어떤 기능을 담당하나요?
-
미해결쿠버네티스 101 - 클라우드/서버 개발 첫걸음
skaffold init 부분
skaffold init=>'skaffold는 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 라고 발생합니다. 강의 처음부터 쭉 따라하고 있는데 어느 부분을 놓친지 잘 모르겠습니다.
-
미해결대세는 쿠버네티스 (Helm편)
mychart 생성시 configmap 을 생성하고 배포시 발생하는 에러문의
cm-object.yaml 을 생헝한 후 helm install mychart . -n default --set persistence.enabled=false 명령을 실행하면 Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: error validating "": error validating data: apiVersion not set 라는 에러가 발생합니다. 확인 부탁드립니다.
-
미해결대세는 쿠버네티스 (Helm편)
install 시 발생하는 에러 문의
install 시에 아래와 같은 에러가 발생하는데 확인 부탁드립니다.Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(ServiceAccount.metadata): unknown field "automountServiceAccountToken" in io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
우분투22.04 기반
우분투 22.04 기반으로도 가능할까요?
-
미해결실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
ch2/2.1로 vagrant up 명령어로 구성을 했는데 extenal ip에 pending이라고 나오네요.
ch2/2.1로 vagrant up 명령어로 구성을 했는데 extenal ip에 pending이라고 나오네요.제 PC가 문제가 있나 싶어서 그림으로 배우는 프로메테우스에 주신 걸로 vagrant up해서 설치 후 로드밸런서 설치하면 external ip가 정상적으로 할당이 됩니다. 그리고 그림으로 배우는 프로메테우스에 나온 로드밸런서 yaml파일을 가져와 현재 ch2/2.1에 vagrant up으로 설치해도 external ip가 pending으로 나오네요. 이걸로 몇일동안 이렇게 저렇게 해보았는데 안되서 확인 부탁드립니다.onedrive에서 vdi 파일 다운받아서 하는 방법은 알지만 현재 환경이 onedrive 접속이 안되서 어떻게든 vagrant up으로 설치해야 해서 문의드립니다.
-
미해결대세는 쿠버네티스 (초급~중급편)
3-3)Pod 실습
3-3)Pod 부분 실습을 할 때 mountPath : /mount3 으로 지정을 했는데, 이론이나 실습하실 때 설명이나 해당 path 가 이전에 만들어져 있어야 한다고 했습니다. 근데 실습에서 말씀하실 때 hostPath 실습에서 path 를 만들어줬기 때문에 해당 pod 가 정상적으로 만들어진다고 하셨는데, hostPath 실습을 할 때 /mount3 을 만들어주는 실습이 없지 않았나요..? 분명 hostPath 실습에서 /mount3 를 만드는 실습이 없었던 거 같은데 왜 정상적으로 실행이 되는지 궁금합니다.
-
미해결쿠버네티스 어나더 클래스-Sprint 1, 2 (#실무기초 #설치 #배포 #Jenkins #Helm #ArgoCD)
M1 Macbook 에서는 학습할수없을까요?
윈도우 노트북을 사야할까요? ..
-
해결됨대세는 쿠버네티스 (초급~중급편)
vagrant up
vagrant up 시키는데 마지막 줄에서 계속 멈춥니다.. 어떻게 해야 할까요..?k8s-master: Complete!k8s-master: Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.==> k8s-master: Running provisioner: shell...k8s-master: Running: inline scriptk8s-master: I1009 15:03:45.131633 14690 version.go:255] remote version is much newer: v1.28.2; falling back to: stable-1.22k8s-master: [init] Using Kubernetes version: v1.22.17k8s-master: [preflight] Running pre-flight checks window 11virtualbox 6.1.32vagrant 2.2.19
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
metalb 를 활용한 로드 밸런싱 질문입니다
안녕하세요 강의를 들으면서 제가 직접 구축을 해보고 싶어서 여러 시도를 하고 있는데metalb에 대한 궁금한 점이 생겼습니다. 제가 지금 온프레미스 환경(집 컴퓨터) 와 여러 클라우드의 EC2(AWS뿐만 아니라 민간 클라우드 대여업체)를 활용해서 쿠버네티스를 구성하려고 하는데 여기서 궁금한점이 있습니다.metalb 방식에 layer2 방식이 있고 bgp 방식이 있더라구요. layer2을 활용해서 로드밸런싱이 동작할까요?2. layer2 방식의 로드밸런싱을 하게되면 EXTERNAL IP에 192.~로 시작하는 private 네트워크 주소가 나오는데 이 private 네트워크 주소를 public ip 처럼 외부에 할당 하려면 어떻게 해야할까요?
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
ssh-keygen 하는 이유
강의를 보면 젠킨스 마스터 서버에서 slave 서버로 ssh 접속하기 위해 ssh keygen 과 copy-id 를 해서 비밀번호 없이 ssh 접속을 할 수 있도록 설정했습니다. 근데 젠킨스 웹페이지에서 slave 노드 정보를 추가할 때 계정과 패스워드를 또 추가하는 이유가 무엇인가요?? 어차피 없어도 이미 ssh 정보가 있어서 들어갈 수 있지 않나요 ? bash 끼리 통신하는거랑 어플리케이션에서 통신하는 거랑은 별도의 계정 정보가 필요한 걸까요?? 아니면 그냥 젠킨스 페이지에서만 설정하면 되는데 굳이 copy-id 를 하는 이유가 궁금합니다.
-
미해결대세는 쿠버네티스 (초급~중급편)
curl -O 해당 함수에서 인증서에 대한 파기 여부를 검사하지 못했습니다.
며칠 전에 같은 질문으로 했었는데 답변이 varantfile 내용을 올려달라고 하셨는데, 강사님이 올려주신 URL 로 접근하면 다운받아지는 파일 내용을 복사해서 올리겠습니다. NodeCnt = 2Vagrant.configure("2") do |config| # config.vbguest.installer_options = { allow_kernel_upgrade: true } config.vm.box = "centos/7" config.vm.provider :virtualbox do |vb| vb.memory = 3072 vb.cpus = 4 end config.vm.provision :shell, privileged: true, inline: $install_common_tools config.vm.define "k8s-master" do |master| master.vm.hostname = "k8s-master" master.vm.network "private_network", ip: "192.168.56.30" master.vm.provision :shell, privileged: true, inline: $provision_master_node end (1..NodeCnt).each do |i| config.vm.define "k8s-node#{i}" do |node| node.vm.hostname = "k8s-node#{i}" node.vm.network "private_network", ip: "192.168.56.#{i + 30}" end endend$install_common_tools = <<-SHELL# ssh password 접속 활성화sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_configsed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config;systemctl restart sshd.service# 방화벽 해제systemctl stop firewalld && systemctl disable firewalldsystemctl stop NetworkManager && systemctl disable NetworkManager# Swap 비활성화swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab# br_netfilter 모듈 로드cat <<EOF | tee /etc/modules-load.d/k8s.confbr_netfilterEOF# Iptables 커널 옵션 활성화cat <<EOF > /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOFsysctl --system# permissive 모드로 SELinux 설정(효과적으로 비활성화)setenforce 0sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config# 쿠버네티스 YUM Repository 설정cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=0gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpgexclude=kubelet kubeadm kubectlEOF# Centos Updateyum -y update# Hosts 등록cat << EOF >> /etc/hosts192.168.56.30 k8s-master192.168.56.31 k8s-node1192.168.56.32 k8s-node2EOF# 도커 설치yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum install -y containerd.io-1.4.9-3.1.el7 docker-ce-3:20.10.8-3.el7.x86_64 docker-ce-cli-1:20.10.8-3.el7.x86_64mkdir /etc/dockercat > /etc/docker/daemon.json <<EOF{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=true" ]}EOFmkdir -p /etc/systemd/system/docker.service.d# 도커 재시작systemctl daemon-reloadsystemctl enable --now docker# 쿠버네티스 설치yum install -y kubelet-1.22.0-0.x86_64 kubeadm-1.22.0-0.x86_64 kubectl-1.22.0-0.x86_64 --disableexcludes=kubernetessystemctl enable --now kubeletSHELL$provision_master_node = <<-SHELL# 쿠버네티스 초기화 명령 실행kubeadm init --apiserver-advertise-address 192.168.56.30 --pod-network-cidr=20.96.0.0/12kubeadm token create --print-join-command > ~/join.sh# 환경변수 설정mkdir -p $HOME/.kubecp -i /etc/kubernetes/admin.conf $HOME/.kube/configchown $(id -u):$(id -g) $HOME/.kube/config# Kubectl 자동완성 기능 설치yum install bash-completion -ysource <(kubectl completion bash)echo "source <(kubectl completion bash)" >> ~/.bashrc# Calico 설치kubectl create -f https://raw.githubusercontent.com/kubetm/kubetm.github.io/master/yamls/k8s-install/calico.yamlkubectl create -f https://raw.githubusercontent.com/kubetm/kubetm.github.io/master/yamls/k8s-install/calico-custom.yamlcurl https://docs.projectcalico.org/manifests/calico.yaml -Okubectl apply -f calico.yaml# Dashboard 설치kubectl apply -f https://kubetm.github.io/yamls/k8s-install/dashboard-2.3.0.yamlnohup kubectl proxy --port=8001 --address=192.168.56.30 --accept-hosts='^*$' >/dev/null 2>&1 &SHELL 공부를 시작하고 싶은데 설치에서 계속 막혀서 진도를 못 나가고 있습니다..
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
deployment 롤링 업데이트
deployment 를 삭제하고 다시 apply 해야 하는 이유가 뭘까요?? 그렇게 되면 중간에 삭제되고 다시 생성되기 이전에 중단이 발생하지 않나요??디플로이먼트는 변경 안해도 이미지가 바뀌면 apply 쳤을때 기본 전략으로 롤링 업데이트로 다른 리플리카 셋으로 생성되는걸로 들은적이 있는 것 같아서요!
-
미해결대세는 쿠버네티스 (초급~중급편)
vagrant up
curl -O , curl -k -O 명령어를 모두 사용해봐도 위에 사진처럼 실행되고, 강사님의 화면과 많이 다르게 실행됩니다.. 가상머신 Oracle VM VirtualBox 7.0.10 이 있는데 vagrant up 을 하면 오류가 발생합니다. 어떻게 해결해야 할까요..?
-
미해결실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
cadvisor vs kube-state-metrics 수집 대상 차이
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다![질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [예 ]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예]3. 질문 잘하기 법을 읽어보셨나요? [예](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.[질문 하기]먼저 강의 너무 잘 듣고 있습니다.cadvisor 와 kube-state-metrics의 수집 대상이 어떻게 차이 나는지, kube-state-metrics 수집 대상을 사용자가 컨트롤 가능한 건지 궁금합니다. cadvisor는 하나의 job으로서 컨테이너 관련 메트릭을 수집하며 그 대상 또한 configmap 파일에서 명확하게 확인 가능합니다.kube-state-metrics는 job이 아닌 모니터링 에이전트가 따로 구성되어서 쿠버네티스 자체에 대한 정보를 수집하는 것 같은데,여기서 제가 궁금한 게:클러스터 내부의 Pod가 사용 중인 리소스 metric 등을 수집하는 kube-state-metrics와 cadvisor 대상이 어떻게 다른지 여쭤보고 싶습니다.또한 kube-state-metrics 대상을 확인하고 추가 변경할 수 있는지도요.왜 궁금한지 조금 설명 드리자면 현재 수집되는 메트릭의 카디널리티를 줄여야하는 이슈가 있어서 필요한 메트릭만 추리고 있는데, kube-state-metrics 대한 정확한 조사가 필요해서요.감사합니다.
-
미해결실습으로 배우는 프로메테우스 - {{ x86-64, arm64 }}
프로메테우스 보안 처리방법
프로메테우스 서버와 타겟 서버간의 통신으로 수신되는 정보가가 평문으로 조회되는데 보안처리 방법은 없을까요?[질문 전 답변]1. 강의에서 다룬 내용과 관련된 질문인가요? [ 아니요]2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 ]3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요](https://www.inflearn.com/blogs/1719)4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.[질문 하기]
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
volumeClaimTemplates의 독립적 저장 특성
[질문 하기]gouplife 님이 이전에 질문했던 사항이긴 한데 아무리 읽어 봐도 현재 저의 지식으로는 이해하기 힘들어 다시 질문 드려요ㅜ 먼저 제가 이해한 내용을 말씀드리면 기존 디플로이먼트나 파드는 상태를 저장하지 않기 때문에 단순히 PVC를 StorageClass에 클레임하여 PV를 받아 모든 파드들이 동일한 PV?에 저장을 한다 하지만 Statefulset을 사용할 경우 상태를 저장하는 특성 때문에 volumeclaimtemplates라는 옵션을 사용할 수 있는데 이는 각각의 POD들 마다 고유한 PV를 가지게 된다 즉, pod 혼자 하나의 PV를 사용한다 저는 위와 같이 이해를 하였습니다. 그래서 sts-0이라는 파드에 접속을 하여 아래와 같이 ttt라는 파일을 만들었습니다 [root@m-k8s 5.7]# k exec sts-0 -it -- /bin/bashroot@sts-0:/# cd backup_data/root@sts-0:/backup_data# touch tttroot@sts-0:/backup_data# lsttt volumeclaimtemplates는 pod들 마다 다른 pv를 사용하기에 다른 pod들에 접속을 하면 방금 sts-0에 만든 ttt파일은 없어야 되지 않나 생각했습니다 하지만 sts-1 pod에 접속을 하여 확인을 해보니 ttt 파일이 있었습니다[root@m-k8s 5.7]# k exec sts-1 -it -- /bin/bashroot@sts-1:/# cd backup_data/root@sts-1:/backup_data# lsttt그래서 궁금한 점이 아래와 같아요! volumeclaimtemplates는 pod 마다 독립적인 공간을 사용한다는 게 서로 다른 볼륨에 저장을 한다는 뜻이 아닐까요? 서로 다른 볼륨에 저장을 하는 게 아니라면 volumeclaimtemplates을 사용하는 이유가 있을까요?
-
미해결그림으로 배우는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
clusterIP가 없을 때 POD끼리의 통신가능 여부
[질문 하기] 안녕하세요 4.6 강의를 듣다가 궁금증이 생겨 질문드려요 CluterIP는 내부에서 POD끼리 통신을 위해 존재하는 서비스라고 이해를 했습니다. 그렇다면 ClusterIP가 없다면 POD끼리 통신이 불가능하지 않을까 생각이 들어 아래와 같은 yaml파일을 배포해봤습니다 apiVersion: apps/v1kind: Deploymentmetadata: name: deploy-nginx labels: app: deploy-nginxspec: replicas: 3 selector: matchLabels: app: deploy-nginx template: metadata: labels: app: deploy-nginx spec: containers: - name: chkip image: sysnet4admin/net-tools-ifn#---#apiVersion: v1#kind: Service#metadata:# name: cl-nginx#spec:# selector:# app: deploy-nginx# ports:# - name: http# port: 80# targetPort: 80# type: ClusterIP 처음에는 아래에 있는 주석을 풀어 ClusterIP를 생성하고 각 POD에 접속하여 pod끼리 ping을 날렸을 때는 당연히 ClusterIP 덕분에 통신이 된다고 생각했습니다 그리고, 주석을 추가해 ClusterIP없이 배포를 했습니다[root@m-k8s 4.6]# k get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESdeploy-nginx-bc5885484-snsgf 1/1 Running 0 33s 172.16.221.160 w1-k8s <none> <none>deploy-nginx-bc5885484-tqcp2 1/1 Running 0 33s 172.16.132.51 w3-k8s <none> <none>deploy-nginx-bc5885484-x269c 1/1 Running 0 33s 172.16.103.178 w2-k8s <none> <none>net 1/1 Running 0 76m 172.16.132.43 w3-k8s <none> <none> [root@m-k8s 4.6]# k get serviceNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10d 그런데 생각과는 달리 ClusterIP가 없어도 pod끼리 통신이 가능하더라고요[root@m-k8s 4.6]# k exec deploy-nginx-bc5885484-snsgf -it -- /bin/bash[root@deploy-nginx-bc5885484-snsgf /]# ping 172.16.132.51PING 172.16.132.51 (172.16.132.51): 56 data bytes64 bytes from 172.16.132.51: seq=0 ttl=62 time=0.806 ms64 bytes from 172.16.132.51: seq=1 ttl=62 time=0.497 ms ClusterIP가 없어도 통신이 가능한 이유가 어떻게 될까요??