본문 바로가기

Data/MLOps

(32)
[k8s] Daemonsets에서 띄운 pod의 hostname을 nodename으로 변경하기 (feat. promtail) Daemonsets으로 로그 서비스(promtail)를 띄울때 어디에서 로그가 왔는지 추적하기 위해 hostname label을 사용했는데 해당 정보값이 pod의 이름으로 되어있어서 어디서 날라왔는지 확인하기가 어려웠다. 따라서, 위와같은 상황을 해결하고자 특정 노드에서 날라왔음을 표기해야하는데 아래와같은 방식으로 해결했다. promtail의 Daemonsets yaml파일에는 아래와같이 env를 설정진행 - env.valueFrom.fieldRef.fieldPath를 사용하여 k8s 환경변수를 가져오게끔 설정 ...(생략) spec: selector: matchLabels: app: promtail template: metadata: labels: app: promtail spec: containers..
[Kibana] Elasticsearch를 master, data node로 변경한 이후 kibana stack monitoring dashboard에 접근안될때 Elasticsearch에 대해서 master node, data node로 나눈이후 kibana에 접근시 위와같은 권한 이슈가 발생함. 추가로 내가 로그인한 계정의 role은 superuser로 모든 권한을 가지고 있는 계정임에도 불구하고 권한 이슈가 발생. 아래와같이 해결이 가능했음. 첫번째, Elasticsearch cluster에 대해서 master node, data node중 하나는 remote_cluster_client라는 role을 갖고 있어야함. 나같은 경우에는 master node에 해당 권한을 넘겼음 두번째, Kibana의 config값 세팅중 monitoring.ui.ccs.enabled 라는 값이 있는데 default로 true설정이 되어있음. 해당값을 false로 변경이 필요함...
[ELK] elasticsearch ECK 배포시 기본 사용자 추가 방법 해당 글을 작성하는 이유는? - elasticsearch를 ECK방식으로 배포를 했었는데, 매번 배포할때마다 elastic 유저의 패스워드가 바뀌어서 배포때마다 filebeat에 바뀐 패스워드를 반영해줘야하는 번거로움이 존재했다. - 따라서, 위와같은 귀찮은일을 안하기 위해 비밀번호가 고정적이며 + superuser권한을 갖는 계정을 생성해서 배포때 반영하도록 했다. 아래는 작업한 내용이다. 참고로 기존 클러스터 환경에는 elasticsearch 관련 CRD가 배포되어있다는 가정하에 작성한다. 먼저 생성하고 싶은 계정 정보를 Secret에 기입 및 생성을 한다. HTML 삽입 미리보기할 수 없는 소스 그다음에 elastic.yaml파일에 위에서 생성한 secret을 포함되게끔 반영한다. HTML 삽입 미..
CoreDNS 관련 정리 참고자료 https://h-susu.tistory.com/13 https://velog.io/@dhkim1522/kubernetes%EC%97%90%EC%84%9C%EC%9D%98-DNS-%EC%84%9C%EB%B9%84%EC%8A%A4-feat.-CoreDNS CoreDNS? CoreDNS는 CNCF재단에서 관리하는 프로젝트. CoreDNS는 클러스터를 지속적으로 모니터링하고, 새로운 Service, Pod이 추가되는경우 도메인 서버에 이를 업데이트를 함 kubelet은 새로운 Pod이 생성될때, Pod의 /etc/resolv.conf파일에 clusterDNS서버의 IP주소를 추가함. $ kubectl exec -it my-pod -- cat /etc/resolv.conf search default.s..
[FastAPI] 인증 정보 추가하기 FastAPI를 사용하면서 모르는 외부 인원이 접근하여 내가 만든 REST API를 마구잡이 실행하는걸 걱정할수가 있는데, FastAPI에서 제공하는 인증관련 요소를 활용하면 막을수있다. 아래는 정말 간단한 예시이고, 좀더 안전한 방식을 원한다면 문서를 정독을 해야할것같다. https://fastapi.tiangolo.com/advanced/security/http-basic-auth/ HTTP Basic Auth - FastAPI FastAPI framework, high performance, easy to learn, fast to code, ready for production fastapi.tiangolo.com 양질의 블로그 글을 위해 바로 예시 코드를 공유하자면... import time f..
[K8S] containerd private registry 접근하기 Kubernetes 가 v1.24버전 이후로는 docker에 대한 지원을 안하고 containerd로 서비스를 하게된다. 현업에서 v1.28버전을 사용중이서 여러가지 서비스를 돌려보는 와중에 private registry에 들어있는 image가 pull이 안되어 문제를 해결하려고 한다. k8s상황과 에러구문은 다음과 나타난다. # k8s status (pytorch) ubuntu@vm:~$ kubectl get pods # NAME READY STATUS RESTARTS AGE # jaeyung-668c67cd6b-g97w2 0/1 ImagePullBackOff 0 5s (pytorch) ubuntu@vm:~$ kubectl describe pod jaeyung-668c67cd6b-c6mjm #Event..
[K8S] containerd runtime사용 Error while dialing dial unix /var/run/dockershim.sock 에러 해결 crictl명령어 사용시 아래와같이 에러가 발생 할 경우. 다음과같은 명령어를 실행합니다. FATA[0000] listing images: rpc error: code = Unavailable desc = connection error: desc = "transport: Error while dialing dial unix /var/run/dockershim.sock: connect: no such file or directory" 명령어 실행 sudo crictl config --set runtime-endpoint=unix:///run/containerd/containerd.sock --set image-endpoint=unix:///run/containerd/containerd.sock
[k8s] deployment 생성중 만난 문제 Container image already present on machine pod이 제대로 생성이 안되서 아래 명령어로 pod 상태 확인 진행 kubectl describe pod POD_NAME 아래와같은 에러발생하는 상태였음 - Container image "" already present on machine 찾아보니 pod이 아무런 동작을 안하고 꺼지는 상태라서 충돌이 발생하고 있는 상태였음. 생성시 deployment의 replica를 1로 설정해둔 상태 그래서 아래와같은 command 구문을 추가해서 pod이 띄워지고나서 계속 특정 동작을 하게끔 변경함 - 이외로 imagePullPolicy를 Always로 설정 spec: hostNetwork: true containers: - name: N..