전체 글 74

Kubernetes 사용을 편리하게 해주는 툴

k9s 원래는 일일히 kubectl 명령어 치는 것을, 한 번의 키입력으로 가능하게끔 해주는 툴 정말 편하다 설치 방법 K9S_VERSION=v0.26.7 curl -sL https://github.com/derailed/k9s/releases/download/${K9S_VERSION}/k9s_Linux_x86_64.tar.gz | sudo tar xfz - -C /usr/local/bin k9s 사용법 k9s kubectx 다루는 k8s 클러스터가 많을 때 컨텍스트 변경을 쉽게 해주는 툴 ~/.kube/config에 여러 클러스터를 기술하고, kubectx로 변경한다. 설치 방법 wget https://github.com/ahmetb/kubectx/releases/download/v0.9.4/kubec..

공부/Kubernetes 2023.02.20

k8s client-go leader election 코드 메커니즘 분석

개념 leader election이란 말 그대로 리더를 선출하는 것으로, CS에서 자주 쓰이는 개념이다. kubernetes go client에서는 이러한 leader election 기능을 제공한다. 아래는 k8s go client가 사용하는 leader election 방식에 대한 간단한 그림이다. 특정 리소스(그림 상에서 Lock)에 대해서 소유권이 자신에게 있다고 작성하는 사람이 leader이다. 일단 leader가 되면 leader는 주기적으로(그림 상에서 leaseDuration) 자신이 아직도 리더임을 갱신한다.(그림 상에서 lastObservedTime) leader가 되지 못한 나머지는 주기적으로 그 리소스를 확인하다가, 한 주기가 지났는데도 리더가 갱신을 못했을 시 소유권이 자신에게 있..

공부/Kubernetes 2022.11.09

kubectl에서 user token 사용하기 (keycloak oidc)

kubectl에서 --token 옵션은 service account 토큰만 가능하다. 하지만 만약 k8s가 oidc 연동 중이라면 kubectl로 user token도 사용할 수 있다. 방법은 service account 토큰 사용법과는 조금 다르다. 1. kube-apiserver.yaml 확인 apiVersion: v1 kind: Pod metadata: ... spec: containers: - command: ... - --oidc-issuer-url=https://{KEYCLOAK 주소}/auth/realms/{REALM 이름} - --oidc-client-id=my-client - --oidc-username-claim=preferred_username - --oidc-username-pref..

공부/Kubernetes 2022.10.10

k8s client-go custom resource 생성(post 사용 시 주의점)

k8s client go에서 custom resource를 생성하기 위해서는 abspath()와 post()를 사용해야 한다. k8s client go도 내부적으로는 kube-apiserver에게 REST api 콜을 보내는 것이므로, kube-apiserver의 규칙에 따라야 한다. kongPlugin이라는 custom resource 생성 시 아래와 같이 하면 된다. kongPlugin := &KongPlugin{ TypeMeta: metav1.TypeMeta{// 1 APIVersion: "/", Kind: "KongPlugin", }, ObjectMeta: metav1.ObjectMeta{ Name: "kongplugin-sample", Namespace: "", }, ...}} body, err..

공부/Go 2022.09.15

kubernetes 환경에서 Postgres streaming replication 설정

이전 글에서 이어진다. https://togomi.tistory.com/76 kubernetes 환경에서 Postgres migration 백업 & 복원 들어가기에 앞서.. 이 글은 k8s 환경에서 postgres의 데이터를 migration 하는 방법입니다. 이하의 글은 수동으로 하는 방법이며, 쉘 스크립트를 이용해 자동으로 하고 싶다면 아래 github을 참고해주세 togomi.tistory.com 이전에는 파일을 통해 스냅샷 백업/복원이었다면, 이번에는 postgres의 streaming replication 기능을 이용한 실시간 sync이다. 1. 원본 postgres에서 replication 유저 생성 원본 postgres 내부로 접속 kubectl -n {네임스페이스} exec -it {POD..

공부/Kubernetes 2022.08.18

kubernetes 환경에서 Postgres migration 백업 & 복원

들어가기에 앞서.. 이 글은 k8s 환경에서 postgres의 데이터를 migration 하는 방법입니다. 이하의 글은 수동으로 하는 방법이며, 쉘 스크립트를 이용해 자동으로 하고 싶다면 아래 github을 참고해주세요. https://github.com/aldlfkahs/postgres-migration GitHub - aldlfkahs/postgres-migration: Automate postgres(timescaledb) backup & restore Automate postgres(timescaledb) backup & restore. Contribute to aldlfkahs/postgres-migration development by creating an account on GitHub. g..

공부/Kubernetes 2022.08.17

k8s kubelet forbidden sysctl: not whitelisted 에러 해결

kafkaconnect의 커널 파라미터 설정을 하는데 kubelet에 의해 다음과 같은 에러가 발생했다. forbidden sysctl: "net.ipv4.tcp_retries2" not whitelisted kubelet은 default로 몇몇 sysctl은 허용하지만, 위험한 sysctl은 막는다. 따라서 kubelet 설정에 해당 sysctl을 허용해주어야 한다. 1. Kubelet 설정 파일 위치 찾기 systemctl status kubelet 위 명령어를 치면 아래와같이 나온다 /var/lib/kubelet/config.yaml에 위치하는 것을 알 수 있다. 2. allowedUnsafeSysctls 추가 해당 파일을 연 후 아래와 같이 수정한다. apiVersion: kubelet.confi..

공부/Kubernetes 2022.07.18