728x90
반응형

[ 요약 정리 ]

Kubernetes edit Error 문제 원인
기본 에디터 설정이 되어 있지 않아 들여쓰기 등 문법 적용이 안됨

 

해결 방법
1. 서버 기본 에디터 설정 (일시적 해결 방법, 서버 재접속 시 다시 설정해야 함)

export EDITOR=[원하는 에디터]

 

2. 쿠버네티스 에디터 설정 (일시적 해결 방법, 서버 재접속 시 다시 설정해야 함)

export KUBE_EDITOR=[원하는 에디터]
# 또는 edit 할 때 마다 적용
KUBE_EDITOR="vim" kubectl edit ...

 

3. 서버 환경 변수 설정 (~/.bashrc 적용 방법, 찾아보면 다른 방법도 있다는 점)

# 직접 vi 편집기를 통해 작성하거나 아래와 같이 추가
echo 'export EDITOR=vim' >> ~/.bashrc

 

쿠버네티스 공부를 하는 과정에서
kubernetes deployment 를 생성한 후
Kubernetes edit 을 통해 yaml 파일을 수정하고 나서 저장하려고 하는데 다음과 같은 에러가 발생했다.

error: deployments.apps "hpa-hname-pods" is invalid
A copy of your changes has been stored to "/tmp/kubectl-edit-6tjd6.yaml"
error: Edit cancelled, no valid changes were saved.

 

마지막에 보면 편집이 취소되었고 변경된 부분이 저장되지 않았다는 메시지가 떴다.
편집하는 과정에서 yaml 파일에 들여쓰기를 하는 부분에서 에러가 발생한 것 같다.
이미 들여쓰기가 적용되어 있는 부분을 수정할 때에는 수정이 잘 되었지만
새로 추가해준 경우 제대로 편집이 되지 않고 에러가 발생했다.

 

쿠버네티스에서 사용자가 원하는 에디터를 통해 편집할 수 있도록 지원하고 있었다.

https://kubernetes.io/docs/reference/kubectl/cheatsheet/#editing-resources

 

kubectl Cheat Sheet

This page contains a list of commonly used kubectl commands and flags. Kubectl autocomplete BASH source <(kubectl completion bash) # setup autocomplete in bash into the current shell, bash-completion package should be installed first. echo "source <(kubect

kubernetes.io

 

kubernetes Documentation 을 보면 다음의 명령어를 통해 원하는 데이터를 사용할 수 있다.

kubectl edit svc/docker-registry                      # Edit the service named docker-registry
KUBE_EDITOR="nano" kubectl edit svc/docker-registry   # Use an alternative editor

 

그래서 바로 적용해봤다.

[root@m-k8s ~]# KUBE_EDITOR="vim" kubectl edit deployment hpa-hname-pods
deployment.apps/hpa-hname-pods edited

 

vim 에디터를 통해 새로운 내용을 추가하고 저장했더니 정상적으로 편집이 되었다는 메시지가 나왔다.

 

쿠버네티스 에디터와 관련된 내용을 찾아보니
쿠버네티스 에디터를 서버의 기본 에디터를 가져와서 사용한다고 한다.
내가 만든 centOS 7 가상 서버의 환경 변수를 확인해보니 기본 에디터 설정이 되어있지 않았다.

[root@m-k8s ~]# env | grep EDITOR

 

따라서, 내가 만든 리눅스 서버의 기본 에디터를 설정해주거나 쿠버네티스의 에디터를 설정해주면 된다.
일시적으로 사용하려면 export 를 통해 설정해준 뒤 사용할 수 있다.
일시적이기 때문에 재접속하면 사라진다는 점!

# 리눅스 서버 에디터 설정
export EDITOR=[원하는 에디터]

# 쿠버네티스 기본 에디터 설정
export KUBE_EDITOR=[원하는 에디터]

 

영구적으로 계속 사용하려면 따로 환경 변수에 기본 에디터를 추가해야 한다.
나는 ~/.bashrc 파일에 환경 변수를 export 해주었다.

[root@m-k8s ~]# cat ~/.bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

alias k=kubectl
complete -F __start_kubectl k

export EDITOR="vim"

이제 다시 kubectl edit deployment 를 하게 되면 기본 에디터인 vim을 통해 편집이 가능하다.

 

 

- 참고 사이트 -

https://stackoverflow.com/questions/56811177/how-can-i-fix-edit-cancelled-no-changes-made-in-shell

 

How can I fix Edit cancelled, no changes made in shell

I run kubectl edit deployment to change the version of one of my pods (this commands opens a temp file in my text editor and then I usually edit and close this temp file) and even before I close ...

stackoverflow.com

 

728x90
반응형
복사했습니다!