Kubernetes kube-proxy 알아보기

kube-proxy kube-proxy는 워커노드의 컴포넌트로 동작하며 Network proxy 역할을 수행한다. 이는 Kubernetes의 서비스 개념을 구체화한 것이다. kube-proxy is a network proxy that runs on each node in your cluster, implementing part of the Kubernetes Service concept. kube-proxy는 노드의 network rule(ex. iptables rule)을 관리한다. 이러한 network rule들은 파드로의 In/Out 네트워크 통신을 허용한다....

Kubernetes CoreDNS 알아보기

CoreDNS CoreDNS는 쿠버네티스 클러스터의 DNS 역할을 수행할 수 있는, 유연하고 확장 가능한 DNS 서버이다. CoreDNS is a DNS server. CoreDNS integrates with Kubernetes via the Kubernetes plugin, or with etcd with the etcd plugin. All major cloud providers have plugins too 1. DNS Policy DNS Policy kubelet은 spec.dnsPolicy를 확인하여 파드...

Kubernetes Controller

Kubernetes Controller Controller 쿠버네티스에서 컨트롤러는 클러스터의 상태를 감지하다가 필요한 경우 생성 또는 변경을 요청하는 control loops이다. 각 컨트롤러는 현재 상태를 Desired 상태로 변경하도록 시도한다. In Kubernetes, controllers are control loops that watch the state of your cluster, then make or request changes where needed. Each controller tries to move the...

Kubernetes Node

Kubernetes Node Node Management 노드의 3가지 주요 컴포넌트는 다음과 같다. kubelet container runtime kube-proxy API 서버에 노드를 등록하는 두 가지 방버이 존재하며 컨트롤 플레인은 신규 노드가 유효한지 확인한다. The kubelet on a node self-registers to the control plane (–register-node) Self register는 노드 등록시 자신의 가용한 리소스를 자동으로 report한다. Manually add...

Kubernetes Deployment생성 Workflow

Deployment workflow EKS를 통해 deployment 생성 시 로그를 확인하며 Kubernetes에서 실제 리소스 생성이 되는 과정을 살펴본다. Client는 kubectl커맨드를 통해 kube-apiserver로 생성 요청 fields @timestamp, requestURI, verb, requestObject.kind, objectRef.name, user.username, userAgent | filter @logStream like /^kube-apiserver-audit/ | filter objectRef.resource == "deployments" | filter verb == "create" | sort @timestamp desc #...

Kubernetes Component

Kubernetes Component 다음은 Kubernetes를 설치한 이 후에 가장 기본적인 상태를 조회한 것이다. Pod를 보면 EKS에서는 볼 수 없었던 control plane 구성 요소인 kube-apiserver, kube-controller-manager, kube-scheduler, etcd 컴포너트를 볼 수 있다. 해당 컴포넌트들은 모두 master node의 IP로 구성되어 있다. kube-proxy, calico-node는 daemonSet 형태로 구성되어있다. # kubectl get nodes -o wide NAME...

Kubernetes Webhook Token 인증 (Openstack Keystone)

Kubernetes Authenticating kubeadm을 통해 클러스터를 구축하였다면 사용자를 인증할 수 있는 방법을 알아보자. (현재 시점 kubernetes version 1.24) 지난 번에는 Webhook인증에 대해서 알아보았다. Authenticating Authentication strategies 쿠버네티스 클러스터의 CA(Certificate Authority, 인증기관)에 의해 서명된 유효한 인증서를 가지고 있는 경우 (CN=UserName) Minikube 인증서를 통한 사용자 추가 및 인증/인가 Service Account Tokens Minikube 토큰을...

Kubernetes Webhook Token 인증

Kubernetes Authenticating kubeadm을 통해 클러스터를 구축하였다면 사용자를 인증할 수 있는 방법을 알아보자. (현재 시점 kubernetes version 1.24) Kubernetes 사용자에 대해서 먼저 알아보자. 쿠버네티스는 일반사용자와 Kubernetes에서 관리하는 Service Account라는 두 가지 카테고리의 사용자가 존재한다. 쿠버네티스는 일반 사용자 계정을 표현하는 개체가 없으며 API등을 통해서 추가하하는 것도 불가하다. 하지만 이와 관련하여 유저는 아래와...

Kubernetes 클러스터 구축 [kubeadm]

Kubernetes 이번에는 개별 서버들에 kubeadm을 이용해서 Kubernetes Master, Worker를 직접 구축해보려고 한다. (현재 시점 kubernetes version 1.24) 자세한 내용은 공식문서를 참고한다. Creating a cluster with kubeadm kubeadm을 통해 구성할 때 필요사항은 아래와 같다. Need A compatible Linux host. The Kubernetes project provides generic instructions for Linux distributions based on Debian...

Minikube 토큰을 통한 인증/인가

Minikube 1. Token을 이용한 인증 서비스 어카운트는 파드에서 실행되고 있는 프로세스에 대한 ID를 제공해준다. 이 의미는 파드 내부의 특정 프로세스들도 Kubernetes API-Server로 접근 할 때 인증에 대한 부분을 Service Account의 토큰을 통해 인증받을 수 있다는 의미이다. A service account provides an identity for processes that run in a Pod. When...

Minikube 인증서를 통한 사용자 추가 및 인증/인가

Minikube 1.Minikube 인증서를 이용한 사용자 인증 이번에는 인증서를 통한 신규 사용자 생성 및 권한에 대해 확인 해 본다. Normal user A few steps are required in order to get a normal user to be able to authenticate and invoke an API. First, this user must have a certificate issued by...

Minikube 설치 및 분석

Minikube 1. Minikube Minikube는 쉽게 배우고 개발할 수 있도록 하는 데 중점을 둔 로컬 Kubernetes이다. Minikube를 이용해서 빠르게 로컬환경에서 쿠버네티스 클러스터를 구축해본다. 자세한 내용은 Minikube 페이지를 참고한다. Minikube 2. 설치 Minikube는 Linux, Mac 등 다양한 환경에서 구성할 수 있으며 여기서는 AWS Amazon Linux EC2 서버에서 설치를 진행한다. 2.1 Docker설치 Docker를...