728x90

k8s 19

k8s pvc 내부 파일 cp 할땐 항상 rap 옵션으로 할것

pv를 생성 해서 pvc를 동작할때 파일 이관을 할 경우 클라우드 특성상 기존에 가지고 있던 권한, 소유자 정보등이 중요하다 그래서 그냥 cp -r 옵션으로는 명령을 실행한 사용자의 권한 정보가 박히기 때문에 pod 동작 보장이 어렵다 그래서 습관적으로 라도 cp -rap 옵션을 줘서 원본의 모든 정보도 다 같이 가져와야 된다. 이게 잘 못 되면 피곤하게도 777 로 박는 경우과 과거엔 꽤 있었다.

k8s 2023.01.10

k8s statefulset은 pod deployment에 servicename 필수

k8s를 gitops 형태로 꾸밀때 deployment 파일에 선언하는 내용중에 namespace나 이런 내용은 빼야 argo에서 배포 위치 선택을 자유롭게 할 수 있다 일반 pod의 경우는 서비스 선언을 하고 이 서비스가 돌아가는 pod를 선택 하게 하는게 일반적인데 statefulset 경우는 depoyment에서도 serviceName을 명시적으로 선언해 줘야지만 연결이 정상적으로 된다 spec: replicas : 1 serviceName: [서비스 명]

k8s 2023.01.10

istio-ingressgateway virtualservice match 순서(websocket테스트 하다 확인)

istio를 통해 ingressgateway 서비스에서 match 순서가 중요하다 아래 처럼 prefix가 / 먼저 나오면 이후에 나오는 거는 못찾는거 같다 좀더 테스트 해봐야 하지만 기존 route랑 다르게 websocket 확인할 일이 생겨 적용하다가 / 보다 위에 적용해서 match를 순서를 올리니까 정상 되는거 방금 전에 확인 했다 참고로 apiVersion 사용하는거는 v1beta1 이다 ===아래 안됨=== apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: [vs명] spec: hosts: - "*" gateways: - [gw명] http: - match: - uri: prefix: / route: - ..

k8s 2023.01.06

k8s pod 내부 파일 밖으로 kubectl cp 명령어 사용법

k8s pod 가 기동중이고 내부에 있는 파일을 밖으로 꺼내서 작업해야 될때 혹은 반대의 경우가 필요한 경우 사용 kubectl cp [네임스페이스]/[pod명]:[내부경로]/[파일명] [외부서버경로]/[파일명] exec)tomcat war 파일(네임스페이스명: tomcat, pod 명 : tomcat-aadd, 파일명:agent.war) kubectl cp tomcat/tomcat-aadd:/usr/local/tomcat/webapp/agent.war /home/user1/agent.war 디렉토리통으로 할경우에도 됨 반대로 외부 파일을 pod 안으로 넣을때는 kubectl cp [외부서버경로]/[파일명] [네임스페이스]/[pod명]:[내부경로]/[파일명]

k8s 2023.01.03

ctr 로 사설 저장소(harbor) image push

온프레미스 환경은 일반적으로 폐쇄망으로 진행되기에 내부 사설 레포지토리인 하보를 많이 설치한다. k8s가 1.24 부터 dockershim 을 제거 함으로 각 노드에 업글 작업을 하면서 docker 자체도 삭제를 했다 내부에서 이미지 작업을 할 경우 사설 저장소에 push 하기 위해선 태그 명도 사설저장소주소/이미지:태그 이런 형태로 올리는데 도커가 있을 경우에는 간단하게 docker login 한 다음에 $docker push 저장소 주소/이미지명:태그 이런 형태의 명령어로 쉽게 업로드를 했었다. 도커를 제거후에는 ctr(containerd CLI)로 처리 해야 되는데 몇몇 변경점이 있다. 도커가 존재 할때는 docker ps docker images 이런 명령어로 이미지를 확인 가능 했지만 ctr 에..

k8s 2022.11.14

폐쇄망 k8s 업그레이드 docker 제거시 rancher agent 문제

1.23->1.24로 가기위해 dockershim을 제거하고 containerd 만 기동하는데 rancher agent 가 기동이 안되고 이미지를 자꾸 못찾는다고 나온다. v2.6.6 사용하는데 이미지 태그명이 rancher/rancher-agent:v2.6.6 이런식인데 docker.io/rancher/rancher-agent:v2.6.6 로 바꿔줘야 정상적으로 된다. 접두에 docker.io를 붙여야 되다니.. 외부 인터넷이 가능한 환경에서는 자동으로 되던데 폐쇄망에서는 다른 참조가 걸려서 그런지 정확한 이유는 잘 모르겟다.

k8s 2022.08.18

k8s docker -> containerd 변경시 기존 이미지 pull 시에 archive/tar: invalid tar header: unknown

현재 k8s가 1.23 -> 24 upgrade 중인데 dockershim 제거 되고 cotainerd 만 사용하게 변경중에 기존 docker 를 이용해 push 된 이미지가 containerd 만으로 pull 을 할때 archive/tar: invalid tar header: unknown 이런 오류가 발생해서 pod 정상 동작이 안된다. 로그를 좀 확인해 보면 pod를 가져오기 위해 layer를 가져오는 과정에서 발생된 거 같았고 spring boot 로 된 pod 의 dockerfile의 from에 사용중인 jdk가 의심가서 jdk 를 노드에 개별적으로 pull 한뒤에 하니까 된다. 해외 이슈로 찾아본 결과 그런 다중 레이어에서 아카이빙이 tar.gz 로 올라가고 이걸 containerd 가 가져올..

k8s 2022.08.18

metric 서버 설치 (Readiness probe failed: HTTP probe failed with statuscode: 500) 오류 수정

k8s를 설치 하고 test 하다 보면 모니터링을 할 필요성이 당연히 생기고 rancher를 깔아서 관리를 하고 싶어진다. rancher 설치해도 기본 cpu,mem 은 안보인다. 물론 프로메테우스 깔아야 되는데 기본적으로 metric 서버를 깔면 된다. kubectl top nodes 를 할때 바로 metric API 없다고 하니 아래 깃에서 버전에 맞게 설치 하면 된다. https://github.com/kubernetes-sigs/metrics-server 온프레미스 형태로는 몇몇 오류가 있으니 아래와 같이 해결 하면 된다. metrics-server 가 설치가 되면 상기와 같이 kube-system namespcase 에 설치 되서 pod 정보를 확인해 보면 서버는 running 인데 0/1 컨테..

k8s 2022.07.22

k8s crd,cr

k8s 배포 파이프라인에서 argocd 관련해서 데이터 저장이 어디에 되는건지 이관을 할려고 하는데 어디에도 안보여 확인 결과 argocd는 k8s crd 라는걸 써서 정보를 저장관리 하는걸 봣다. 이게 뭔가 하면 k8s의 커스텀 리소스 관리 관련된건데 yml 파일 안에 kind 종류에 대한 정보같은 그런것들을 관리 하고 신규 등록 되는 crd 정보들을 etcd 에서 관리 하는것 같다. 자세한건 더 찾아보지 않았지만 첨 보는거라 기록한다.

k8s 2022.03.24
728x90