k8s 3

operator-sdk로 k8s 기본 리소스 컨트롤러 추가하기

operator-sdk는 CRD뿐만 아니라 k8s의 기본 리소스 또한 다룰 수 있다. CRD의 컨트롤러나 웹훅을 만들때와 마찬가지로 group,version,kind만 잘 지정해주면 된다. 아래 예시는 k8s의 기본 리소스 중 하나인 RoleBinding의 컨트롤러를 생성하는 과정이다. 1. API 그룹 확인하기 $ kubectl api-resources | grep rolebinding 왼쪽에 리소스 이름, 중간에는 API 그룹이 나온다. rolebinding의 그룹은 rbac.authorization.k8s.io임을 확인 할 수있다. 2. API 버전 확인하기 $ kubectl api-versions | grep rbac.authorization.k8s.io 1번에서 확인했던 그룹이름으로 grep을 ..

공부/Kubernetes 2021.06.08

calico 완전 삭제 후 재설치

쿠버네티스 구축을하면서 짜증나는 부분 중 하나가 네트워크인데, 이 네트워크 부분이 꼬이면 정말 힘들어진다. yaml파일을 이용해 설치/삭제 할때 단순히 kubectl apply -f 파일이름 kubectl delete -f 파일이름 을 이용하곤 하는데, calico같이 실제 노드에 파일을 생성하거나 iptable을 수정하는 모듈은 kubectl delete -f 만으로는 부족하다. 관련된 파일과 iptables 룰 및 tunl0 인터페이스 등을 삭제해줘야한다. 1. 관련된 파일 삭제 calico가 어떤 파일들을 참조하는지 먼저 확인하자. 설치 yaml을 확인해도 상관없다. 난 오류가 발생한 상태의 pod를 describe했다. $ kubectl describe pod {칼리코 POD} -n kube-sy..

공부/Kubernetes 2021.05.22

Kubernetes namespace가 terminating에 멈춰서 안 지워질 때

쿠버네티스를 사용하다보면 네임스페이스를 날려야할 때가 많다. 그러면 꼭 terminating 상태에서 멈춰서 안 지워지는 현상이 발생하곤 한다. 이 현상을 구글링 하면 finalizer 제거를 통해 네임스페이스를 강제 삭제하는 방법이 나오지만 바람직한 방법은 아니다. 애초에 네임스페이스가 terminating에서 멈춰 있는 이유는, 잔존하는 리소스들이 해당 네임스페이스에 남아있기 때문이다. 그 잔존 리소스들 또한 terminating에 멈춰 있을 가능성이 높은데, 보통의 경우에 이는 삭제 순서가 꼬였을 때 발생한다. 따라서, 그 잔존 리소스들을 다 지워주기만 한다면 정상적으로 지워질 것이다. 파악하는 방법은 아래 커맨드를 이용하면 된다. $ kubectl get namespace {네임스페이스 이름} -..

공부/Kubernetes 2021.03.13