본문 바로가기

k8s9

[k8s] nginx-ingress 에서 ingress 등록할 때 Internal error occurred: failed calling webhook "validate.nginx.ingress.kubernetes.io" 오류 k8s에 nginx ingress 를 등록하고, ingress 를 등록하면 등록한 서비스의 접근을 확인하기 위해서 webhook 이 실행됩니다.  nginx-ingress 차트를 등록하면 자동으로 등록되기 때문에 다른 Helm 차트를 등록하면 자동으로 실행되고, 서비스 등록을 체크 합니다.이 체크 URL을 로컬의 /etc/hosts 에 등록하여 연결을 확인할 수도 있고, 해당 webhook을 삭제 하여도 됩니다. kubectl delete validatingwebhookconfiguration ingress-nginx-admission 2024. 10. 26.
[k8s] k8s 노드에 ssh 키없이 접근 하는 방법(Lens의 node shell 파드 이용하는 방법) 오픈 렌즈에서는 ssh 키 없이 노드에 접근할 수 있습니다 이는 nsenter 명령어를 이용하여 키 없이 노드에 접근할 수 있습니다. https://github.com/lensapp/lens/blob/5670312c474eb5b6d506a3793863707a7df76775/src/main/node-shell-session.ts#L57-L87 GitHub - lensapp/lens: Lens - The way the world runs Kubernetes Lens - The way the world runs Kubernetes. Contribute to lensapp/lens development by creating an account on GitHub. github.com 소스코드는 이곳에서 확인할 수.. 2023. 6. 2.
[k8s] The PersistentVolume "pv" is invalid: nodeAffinity: Invalid value: core.VolumeNodeAffinity{Required:(*core.NodeSelector)(0xc00beeda70)}: field is immutable pv 설정시 발생하는 다음 오류는 노드 셀렉터에 설정된 노드의 이름과 노드가 매치되지 않을 때 발새합니다. nodeSelectorTerms 에 설정된 노드 명과 현재 조회되는 노드가 일치 하는지 확인 노드 명이 맞다면 현재 사용중인 kubeconfig 가 배포하고자 하는 클러스터 인지 확인 2023. 6. 2.
[k8s] pod has unbound immediate persistentvolumeclaims 오류 k8s에서 pv 를 설정할 때 다음과 같은 오류가 발생하는 경우가 있습니다. 이 경우 저는 다음의 순서로 확인하여 오류를 해결 할 수 있었습니다. pv 오류 pv에 설정된 노드가 오류가 있는 경우 존재하지 않는 노드에 pv 를 설정한 경우 입니다. nodeSelectorTerms의 설정을 확인하면 됩니다. 설정된 디렉토리가 없는 경우 pv의 local.path 에 설정된 디렉토리 경로가 없거나, 권한이 없을 경우 입니다. 디렉토리가 존재하는지 확인합니다. pvc 오류 pv 와 pvc 가 연결이 되지 않는 경우 pv와 pvc가 연결되지 않는 경우입니다. 이름과 스토리지 클래스를 다시 확인합니다. 스토리지 클래스가 다른 경우 차트에 설정된 스토리지 클래스의 pv 가 존재하지 않는 경우 입니다. 스토리지 클래.. 2023. 5. 29.
[k8s] Failed to contact API server when waiting for CSINode publishing: Get https://1.1.1.1:6443/apis/storage.k8s.io/v1/csinodes/k8s-server: x509: certificate has expired or is not yet valid 오류 처리 방법 k8s 서버의 노드 상태가 NotReady 가 되어서 원인을 확인해 보니 kubelet 에서 오류가 발생하고 있었습니다. k8s 서버에서 다음과 같은 오류가 발생하면 k8s 서버가 사용하는 인증서를 갱신해 주어야 합니다. Failed to contact API server when waiting for CSINode publishing: Get https://1.1.1.1:6443/apis/storage.k8s.io/v1/csinodes/k8s-server: x509: certificate has expired or is not yet valid 인증서의 위치는 /etc/kubernetes/pki 입니다. 이 위치에 있는 인증서를 최신버전으로 변경해 주면 됩니다. - 인증서 위치: /etc/kuberne.. 2023. 2. 16.
[argocd] ERRO[0000] Choose a context name from: 오류 처리 argocd 에 클러스터를 추가할 때 다음과 같은 오류가 발생하면서 클러스터가 추가 되지 않는 오류가 발생하는 경우가 있습니다. 이때는 추가하고자 하는 클러스터의 이름을 설정하고, 추가 여부를 묻는 질문에 y를 입력하면 클러스터를 추가할 수 있습니다. $ argocd cluster add --kubeconfig kubeconfig.yaml ERRO[0000] Choose a context name from: CURRENT NAME CLUSTER SERVER * k8s-server@admin k8s https://k8s-server:6443 # 클러스터 추가 명령: 명령 실행 후 [y/n] 여부를 물어 오면 y 입력이 필요 함 $ argocd cluster add --kubeconfig kubeconfig.. 2022. 11. 29.
[k8s] Ready,SchedulingDisabled 상태 수정 k8s에서 노드의 상태가 이상할 때 노드의 파드를 제거하는 drain 명령을 이용하면 노드가 SchedulingDisabled 상태로 변경됩니다. 이 후 노드의 상태를 다시 복원하고 싶을 때는 uncordon 을 이용합니다. # 이상한 상태의 노드 제거 $ kubectl drain [노드명] # 노드 상태 확인 $ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master-1 Ready control-plane,master 189d v1.21.11 k8s-master-2 Ready control-plane,master 189d v1.21.11 k8s-master-3 Ready control-plane,master 189d v1.21.11 k8s-worker-.. 2022. 11. 29.
[k8s] harbor 와 연결하기 위해서 사용자 인증 추가 하는 방법 k8s에서 harbor와 연결할 때 사용자 인증이 필요합니다. harbor의 사용자 인증을 k8s의 secret에 추가하고, k8s의 yaml 정보에 imagePullSecret 정보로 추가해야 합니다. 먼저 harbor의 CLI secret을 확인합니다. CLI secret은 시간에 따라 변경되기 때문에 시간이 지나면 새로 받아야 합니다. 이 정보를 이용해서 k8s의 secret을 생성합니다. docker-password에 cli_secret 정보를 추가해야 합니다. kubectl create secret docker-registry k8s-private-registry \ --docker-server=harbor.io \ --docker-username=user_name \ --docker-passw.. 2022. 11. 16.
[k8s] 쿠버네티스 시크릿(Secret) 생성 커맨드와 Yaml k8s는 암호 같은 중요 정보를 보관하는 데이터베이스 같은 기능인 시크릿을 제공합니다. 시크릿은 CLI를 이용해서 생성하거나, yaml 을 이용하여 생성할 수 있습니다. https://kubernetes.io/ko/docs/concepts/configuration/secret/ 시크릿(Secret) 시크릿은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 포함하는 오브젝트이다. 이를 사용하지 않으면 중요한 정보가 파드 명세나 컨테이너 이미지에 포함될 수 있다. 시크릿을 사용한다 kubernetes.io 시크릿 생성 CLI 시크릿 생성 yaml 시크릿 사용 secretKeyRef를 이용하여 yaml 에서 이용할 수 있음 2022. 2. 7.