본문 바로가기

전체 글

(150)
Kubernetes 정리 204: Prerequisite - CNI Rocket이나 Mesos Container와 같이 컨테이너와 함께 작동하고 Kubernetes와 같이 컨테이너 간의 네트워킹을 구성해야 하는 다른 솔루션들도 마찬가지입니다. 모두가 사소한 차이를 가지고 유사한 접근 방식을 연구하고 최종적으로 식별함으로써 동일한 네트워킹 문제를 해결하려고 한다면, 왜 동일한 솔루션을 여러 번 코딩하고 개발할까요? 모두가 따를 수 있는 단일 표준 접근 방식을 만들어 보는 것은 어떨까요? 그래서 우리는 이 모든 아이디어를 다른 솔루션에서 가져와 그것의 모든 네트워킹 부분을 하나의 프로그램이나 코드로 옮깁니다. 그리고 이것이 브리지 네트워크를 위한 것이기 때문에, 우리는 그것을 브리지라고 부릅니다. 그래서 우리는 컨테이너를 브리지 네트워크에 연결하기 위해 필요한 모든 작업을 ..
Kubernetes 정리 203: Prerequisite - Docker Networking Docker가 설치된 서버인 단일 Docker 호스트부터 시작해 보겠습니다. eth0에 IP 주소 192.168.1.10으로 로컬 네트워크에 연결하는 인터넷 인터페이스가 있습니다. 컨테이너를 실행할 때 선택할 수 있는 네트워킹 옵션이 다릅니다. 먼저, none 네트워크를 살펴보겠습니다. 네트워크가 none인 경우 도커 컨테이너는 네트워크에 연결되지 않습니다. 컨테이너는 외부 세계에 도달할 수 없고, 외부 세계의 누구도 컨테이너에 도달할 수 없습니다. 여러 컨테이너에 있는 경우 네트워크의 일부가 되지 않고 모두 생성되어 서로 또는 외부와 통신할 수 없습니다. 다음은 호스트 네트워크입니다. 호스트 네트워크를 사용하면 컨테이너가 호스트 네트워크에 연결됩니다. 호스트와 컨테이너 간에는 네트워크 분리가 없습니다...
Kubernetes 정리 202: FAQ 네트워크 네임스페이스를 테스트하는 동안 하나의 네임스페이스를 다른 네임스페이스에서 ping할 수 없는 문제가 발생하는 경우 IP 주소를 설정하는 동안 NETMASK를 설정해야 합니다. i: 192.168.1.10/24 ip -n red addr add 192.168.1.10/24 dev veth-red 방화벽 D/IP 테이블 규칙도 확인해야 합니다. 한 네임스페이스에서 다른 네임스페이스로 트래픽을 허용하려면 IP 테이블에 규칙을 추가하십시오. 또는 IP 테이블을 모두 비활성화합니다(학습 환경에서만).
Kubernetes 정리 201: Prerequisite - Network Namespaces 1. Process Namespace 그렇다면 네임스페이스란 무엇인가요? 호스트가 집이라면 네임스페이스는 각 자녀에게 할당하는 집 안의 방입니다. 이 방은 각 어린이에게 프라이버시를 제공하는 데 도움이 됩니다. 각 어린이는 자신의 방 안에 있는 것만 볼 수 있고 방 밖에서 일어나는 일은 볼 수 없습니다. 그 방만 생각한다면, 그들은 집에 사는 유일한 사람입니다. 그러나 부모는 집안의 모든 방과 집안의 다른 영역을 볼 수 있습니다. 원하는 경우 집안의 두 방을 연결할 수 있습니다. 컨테이너를 생성할 때 컨테이너가 격리되어 있는지 확인하고 호스트의 다른 프로세스나 다른 컨테이너를 볼 수 없도록 해야 합니다. 그래서 네임스페이스를 사용하여 호스트에 특별한 공간을 만듭니다. 컨테이너 안에서는 컨테이너는 자신이 ..
Kubernetes 정리 200: Prerequisite - CoreDNS 이전 강의에서는 DNS 서버가 왜 필요한지, 호스트 이름과 Ips가 많은 대규모 환경에서 DNS 서버가 이름 확인을 관리하는 데 어떻게 도움이 되는지, DNS 서버를 가리키도록 호스트를 구성하는 방법에 대해 살펴 보았습니다. 이 문서에서는 호스트를 DNS 서버로 구성하는 방법에 대해 설명합니다. DNS 서버 전용 서버와 서버의 항목으로 구성할 Ips 세트가 제공됩니다. 여기에는 많은 DNS 서버 솔루션이 있습니다. 이 강의에서는 CoreDNS라는 특정 솔루션에 초점을 맞출 것입니다. 그러면 어떻게 코어 DNS를 얻을 수 있을까요? 코어 DNS 바이너리는 Github 릴리스 페이지에서 다운로드하거나 도커 이미지로 다운로드할 수 있습니다. 전통적인 길로 갑시다. curl 또는 wget을 사용하여 이진 파일을..
Kubernetes 정리 199: Prerequisite - DNS 1. Name Resolution 동일한 네트워크에 속하는 두 대의 컴퓨터 A와 B가 있으며 IP 주소 192.168.1.10 및 1.11이 할당되었습니다. 다른 컴퓨터의 IP 주소를 사용하여 다른 컴퓨터에서 한 컴퓨터를 ping할 수 있습니다. 시스템 B에 데이터베이스 서비스가 있다는 것을 알고 있으므로, 시스템 B의 IP 주소를 기억하는 대신 이름을 db로 지정하기로 결정합니다. 앞으로는 IP 주소 대신 이름 db를 사용하여 시스템 B를 ping하려고 합니다. 지금 db에 ping을 시도하면 호스트 A가 db라는 호스트를 인식하지 못하는 것을 볼 수 있습니다. 어떻게 고칠 수 있을까요? 기본적으로 시스템 A에게 IP 주소 192.168.1.11의 시스템 B에 DB라는 이름이 있다고 알려야 합니다. 시..
Kubernetes 정리 193: Storage Class 이번 강의에서는 스토리지 클래스에 대해 알아보겠습니다. 이전 강의에서는 PV를 생성하고, PVC를 생성하여 해당 스토리지를 요청한 다음 Pod definition 파일의 PVC를 volume으로 사용하는 방법에 대해 얘기했습니다. 이 경우, Google Cloud persistent disk에서 PVC를 만듭니다. 여기서 문제는 이 PV가 생성되기 전에 Google Cloud에 디스크를 생성해야 한다는 것입니다. 애플리케이션에 스토리지가 필요할 때마다 먼저 Google Cloud에서 디스크를 수동으로 프로비저닝한 다음 생성한 디스크와 동일한 이름을 사용하여 persistent volume definition 파일을 수동으로 생성해야 합니다. 1. Dynamic Provisioning 애플리케이션이 필요로..
Kubernetes 정리 192: Additional Topics Additional topics such as StatefulSets are out of scope for the exam. However, if you wish to learn them, they are covered in the Certified Kubernetes Application Developer (CKAD) course.
Kubernetes 정리 191: Application Configuration We discussed how to configure an application to use a volume in the "Volumes" lecture using volumeMounts. This along with the practice test should be sufficient for the exam.
Kubernetes 정리 190: Solution - Persistent Volumes and Persistent Volume Claims
Kubernetes 정리 189: Practice Test - Persistent Volumes and Persistent Volume Claims Q1. We have deployed a POD. Inspect the POD and wait for it to start running. Q2. The application stores logs at location /log/app.log. View the logs. You can exec in to the container and open the file: kubectl exec webapp -- cat /log/app.log Q3. If the POD was to get deleted now, would you be able to view these logs. Q4. Configure a volume to store these logs at /var/log/webapp on the host. Use..
Kubernetes 정리 188: Using PVCs in PODs Once you create a PVC use it in a POD definition file by specifying the PVC Claim name under persistentVolumeClaim section in the volumes section like this: apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: myfrontend image: nginx volumeMounts: - mountPath: "/var/www/html" name: mypd volumes: - name: mypd persistentVolumeClaim: claimName: myclaim The same is true for Repli..