티스토리 뷰
로컬에서 원격으로 클러스터를 관리할 수 있는 환경을 설정할 것입니다.
1. SSH로 클러스터 config 복사
#로컬 터미널 환경에서 실행
ssh 172.17.29.61
sudo vi .kube/config
# 그대로 복사
apiVersion: v1
clusters:
- cluster:
<생략>
server: https://127.0.0.1:6443
name: cluster.local
contexts:
- context:
cluster: cluster.local
user: kubernetes-admin
name: kubernetes-admin@cluster.local
current-context: kubernetes-admin@cluster.local
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
##로컬환경으로 복귀
exit
##로컬에서 실행
vi .kube/config
## 복사한거 그대로 붙여넣기고 일부 내용 수정
apiVersion: v1
clusters:
- cluster:
server: https://172.17.29.61:6443 #IP 수정 필수
name: ubun01 #임의 이름 수정
contexts:
- context:
cluster: ubun01#수정
user: ubun01 #수정
name: ubun01 #수정
kind: Config
preferences: {}
current-context: ubun01
users:
- name: ubun01 #수정
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLVENDQWhHZ0F3SUJBZ0lJSzY0dXlVVHo1RjR3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TlRBeE1qa3hORFEyTkRkYUZ3MHlOakF4TWpreE5EVXhORGRhTUR3eApIekFkQmdOVkJBb1RGbXQxWW1WaFpHMDZZMngxYzNSbGNpMWhaRzFwYm5NeEdUQVhCZ05WQkFNVEVHdDFZbVZ5CmJtVjBaWE10WVdSdGFXNHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFES3B4dWsKZEdaeVhPK3RZdmEwUjBNb2RRL3BxelVJcDEwVXd0ckpGWTJjaGZlZnF0alNad0hmVWNlZ2ZMaE9YMkRkd0dEaApYNUh3QWE2VW00L3A2K0xoNWJJU0NQeStaYjM3VnZ1a01nZUdHYm5TQ01wcnNxc0ozK0xab2h1eWFlSWwwdldHCmxrL1hhRERyRmE4Nnh1TUJ5bDhQb3ZtcVVDTFNiTExscTUwc3N0OHhzWitvK0hEVzJXVEtKZEowZlQxWEE2T08KaFZSYzFmNXcvK1BucU10T2NBQnFjQ2JzdTgxNWN1aVBjS05ObllVYmhwemIwazcrL25Vam9VR3FCWGIzQUQ3dApidER6RTBNTGkrZEF6TzhKTkZHc1Jwekl3S3o1dXlaaEFFY3BPK1BEZkMzK2E5anE1RE55OXE4d0FGSVM1cmR0CjBpdU1uWlF5S3RPY2JGNERBZ01CQUFHalZqQlVNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUsKQmdnckJnRUZCUWNEQWpBTUJnTlZIUk1CQWY4RUFqQUFNQjhHQTFVZEl3UVlNQmFBRlBMcHZZUGZjSTNlY3NoSwo3ZkVyZDNxWCs4VnZNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUFnc3N5eGxlU215ZGYxbkJmNllZcmdyQVJ3CmhGUmVUeGhRY25iOExsSEk0VUVaMjVCckp4VzYzWTZKWVBCVXBPbGpWYjVPcUZMd3loekoyM1NPYmRhbVRUd2sKSVNqazFUQ1JJNTZPUkJYUFk5ZGxsZnVyc1p1a21qQVRPSTdSMXVYOTZJOGhlRWhzSFVvdDM1SGlXbGFlZTY0bQpqRmpwbVBRZzNwa2RFSUd5WEw4RDhrUnpNa1JaNlFVVEYyMWpOVlJlM3NzMGtTQmg0S1JENFJkK29XVS9HK1RDCkcwY2ZJQ0o4MERVVjc5TjVhNEh2cWQyUk1qRlhiUkhvZ3ZPWFRpS1AxVTVEOFZYTlpaaitNUDdXWmFJUjRteGgKWnV0WDFnMXZPZUp5eTFIRWQ2V09seTFwLzl4bE4vRkVSeWRja2Fid1gwSzJ0R1lJVzQ1LzVUQ3pucVRjCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBeXFjYnBIUm1jbHp2cldMMnRFZERLSFVQNmFzMUNLZGRGTUxheVJXTm5JWDNuNnJZCjBtY0IzMUhIb0h5NFRsOWczY0JnNFYrUjhBR3VsSnVQNmV2aTRlV3lFZ2o4dm1XOSsxYjdwRElIaGhtNTBnaksKYTdLckNkL2kyYUlic21uaUpkTDFocFpQMTJndzZ4V3ZPc2JqQWNwZkQ2TDVxbEFpMG15eTVhdWRMTExmTWJHZgpxUGh3MXRsa3lpWFNkSDA5VndPampvVlVYTlgrY1AvajU2akxUbkFBYW5BbTdMdk5lWExvajNDalRaMkZHNGFjCjI5Sk8vdjUxSTZGQnFnVjI5d0ErN1c3UTh4TkRDNHZuUU16dkNUUlJyRWFjeU1Dcytic21ZUUJIS1R2anczd3QKL212WTZ1UXpjdmF2TUFCU0V1YTNiZElyakoyVU1pclRuR3hlQXdJREFRQUJBb0lCQVFERDdKWDBCRGw3dmRCWApRSU9sdmZQMjdGNXJHb1JXam9DV2J1RFpZa1ljR3dWUnovcDZTTzV0ZXdKV2JkNCtuMFhtZm5Ucno5c25RR2tKCjhmQk1SeXQrSFBWeExGRTJ2dVRUVjhCSWVibitjMmJNNG9UWlpNNnA2RlBJOTBweHpwNisxTnRkdUhzT2xnUWQKZEVTS3ZmaUJKYWVNVlpPdGpuWnNISDFGUVFyZlI0TGZxekJ1M3pBUFpoODh1a3pLdG5xTENFWHpwcW15MDJMMgo3SHpkWFZ2ekV6bUNNdlA4VldZWG1HRS9ZZDk1bkNkSTJuYWpJWHBMb25heW9NNzRxb1pnbEg4eXNhWnJRcGxlCjBvMVc1WmhHcW8rWE1qUzRyV1M5bm1ZeGZnVHJzQWZ0dm4xNDgzR1c5ZzNmOWxUaHlXWFpCSEgxV0NmeDZWYzMKci9lNytlZ1JBb0dCQVBMZTB1ZnpDTldBR293V1Bpak9Fd3RuSFd5MVRkVk9xUHI2SCsrUnFKbm1ZdXBDZWNGVgp4MkF0d01hR0xPOUZzZ2dJTXY1QUZ3OFZDYmtCVFY1WlBsNm80MWd6bFVRYmpML2pwTWlObnZZdDRCNkVMQ1ZJCjJpaisxT1Zjb29tanY4cWtSUmhSUVN3Nys3ckI1ZHgwcnBLUkRHbWFKL2piOVRvWmthZk4vZmhwQW9HQkFOV2IKc21ZU1FsK1puTVdRYyt2SE84RWQydGM3OGEyRmQyN3p5cy9ydzExSmJiM0NoQWpGRDhVdVlxTEhUemtMaVpoNQpGM29rVUk4SUNJUGJGeVNmSm5WN3AvZDExZGcvUStCaGg4N0JoTjN6ZVlIZUZNVXZCMDRsZ3loRk9aTFZGblg4CmJBK01xNnNWN2h6SUxQWHlaRjhaV0JpWGxxdDg1bE9CbE85bE92V0xBb0dCQUxwL09xc2NhQnN5UExCMzRCR0wKZFBwYm15Ky81VjI0QW5CL0k0amVhLzZKK0VqMDlQUHVQNlJ1WGNyVWU2cmM5UUhQOGdCbERJL3JVc1Q2NkFOYwpPbFdNRU0vSkJJVUJOc3FmTHdsR0h0dmhqR2xDaTNleUFyeGFPdmRKZEJLSGFKNWVHQ1M5T0hPVU9CQklGbzk4CkZoVzhSakROVElaL3VVWjlIZWtpZURTSkFvR0FFMUpLQ01HT0QyZXRycEVxYXlGU1hsMTg5Z3NPQ1V3UlNZL3oKd0dycStQMHpWLzdJUXFMUWtsMW52cUdZb09oU1FlQnlKekl4dHo1YXh0S0NmV1dIN1FpS1lPL2ZyL2ZKQS9yTwpkZjA3TDNoZWZVakJTRFRBekdqSVBGUkdxT2x0WnE2MmQ1R1oxWmZlT2V4QlpOM1FCbW9jZGQwQVcvS29RdFZ0CnkxbTB3NUVDZ1lFQXY2WjN3S254YXhVYkFUKzRqRW9JcHpmK3ovQjZDYmVhRXpUOWF4N3VLeVhvanhqbDJySEkKbDgwK1c5eDBHNHFIUVZWcjRrQlFxdDF6LzdnMGYzU2l1d2RmQTlvUG5JRVVqM1BteU0vNnh6ODlxYW44eVMzTgpXK3VTbmNvZi9uUDZNMEIyWHZmUXg3S05XYzdhOWlYbksrdFBZeTc3OEdvTmkwZ01YcmlXTGJJPQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
- 결과
2. autocomplete 설정
1) kubectl 설치
root@ubun20-01:~# curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
root@ubun20-01:~# install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
root@ubun20-01:~# kubectl version --client
2) kubecrtl auto complete 설정
kubectl completion | Kubernetes
kubectl completion
Synopsis Output shell completion code for the specified shell (bash, zsh, fish, or powershell). The shell code must be evaluated to provide interactive completion of kubectl commands. This can be done by sourcing it from the .bash_profile. Detailed instruc
kubernetes.io
Install and Set Up kubectl on Linux | Kubernetes
- 해당링크 참조
root@DESKTOP-ARLDN2P:~# sudo apt -y install bash-completion
root@DESKTOP-ARLDN2P:~# type _init_completion
root@DESKTOP-ARLDN2P:~# echo 'source <(kubectl completion bash)' >>~/.bashrc
root@DESKTOP-ARLDN2P:~# echo 'alias k=kubectl' >>~/.bashrc
root@DESKTOP-ARLDN2P:~# echo 'complete -o default -F __start_kubectl k' >>~/.bashrc
root@DESKTOP-ARLDN2P:~# source ~/.bashrc
root@DESKTOP-ARLDN2P:~# k get nodes
NAME STATUS ROLES AGE VERSION
ubun20-01 Ready control-plane 2d17h v1.32.0
ubun20-02 Ready control-plane 2d16h v1.32.0
ubun20-03 Ready control-plane 2d16h v1.32.0
3. krew 설치
1) krew
- 플러그인 매니저
- kubectl CLI 환경에서 관리에 편리한 다양한 플러그인 제공
- Installing · Krew 참조
(
set -x; cd "$(mktemp -d)" &&
OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
KREW="krew-${OS}_${ARCH}" &&
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
tar zxvf "${KREW}.tar.gz" &&
./"${KREW}" install krew
)
#실행
root@DESKTOP-ARLDN2P:~# vi ~/.bashrc
#bashrc에 해당라인 추가
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
root@DESKTOP-ARLDN2P:~# source ~/.bashrc
root@DESKTOP-ARLDN2P:~# kubectl krew
krew is the kubectl plugin manager.
You can invoke krew through kubectl: "kubectl krew [command]..."
Usage:
kubectl krew [command]
Available Commands:
help Help about any command
index Manage custom plugin indexes
info Show information about an available plugin
install Install kubectl plugins
list List installed kubectl plugins
search Discover kubectl plugins
uninstall Uninstall plugins
update Update the local copy of the plugin index
upgrade Upgrade installed plugins to newer versions
version Show krew version and diagnostics
Flags:
-h, --help help for krew
-v, --v Level number for the log level verbosity
Use "kubectl krew [command] --help" for more information about a command.
2) ctx 설치
- ctx: 컨택스트를 편하게 선택하는 플러그인
root@DESKTOP-ARLDN2P:~# k krew install ctx
root@DESKTOP-ARLDN2P:~# k ctx
ubun01
3) ns 설치
- ns: 네임스페이스 관리 플러그인
root@DESKTOP-ARLDN2P:~# k ctx
ubun01
root@DESKTOP-ARLDN2P:~# k krew install ns
Updated the local copy of plugin index.
Installing plugin: ns
Installed plugin: ns
\
| Use this plugin:
| kubectl ns
| Documentation:
| https://github.com/ahmetb/kubectx
| Caveats:
| \
| | If fzf is installed on your machine, you can interactively choose
| | between the entries using the arrow keys, or by fuzzy searching
| | as you type.
| /
/
WARNING: You installed plugin "ns" from the krew-index plugin repository.
These plugins are not audited for security by the Krew maintainers.
Run them at your own risk.
root@DESKTOP-ARLDN2P:~# k ns
default
kube-node-lease
kube-public
kube-system
root@DESKTOP-ARLDN2P:~# k ns kube-system
Context "ubun01" modified.
Active namespace is "kube-system".
root@DESKTOP-ARLDN2P:~# k get po
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-69d8557557-pc7xr 1/1 Running 1 (56m ago) 2d17h
calico-node-94pmp 1/1 Running 1 (52m ago) 2d17h
calico-node-jdwqp 1/1 Running 1 (56m ago) 2d17h
calico-node-tvsjs 1/1 Running 1 (59m ago) 2d17h
coredns-5c54f84c97-j27jj 1/1 Running 1 (52m ago) 2d17h
coredns-5c54f84c97-pjss5 1/1 Running 1 (59m ago) 2d17h
dns-autoscaler-76ddddbbc-bcfwz 1/1 Running 1 (52m ago) 2d17h
kube-apiserver-ubun20-01 1/1 Running 8 (53m ago) 2d17h
kube-apiserver-ubun20-02 1/1 Running 4 (57m ago) 2d17h
kube-apiserver-ubun20-03 1/1 Running 1 (52m ago) 2d17h
kube-controller-manager-ubun20-01 1/1 Running 3 (56m ago) 2d17h
kube-controller-manager-ubun20-02 1/1 Running 3 (52m ago) 2d17h
kube-controller-manager-ubun20-03 1/1 Running 2 (52m ago) 2d17h
kube-proxy-7sxw6 1/1 Running 1 (52m ago) 2d17h
kube-proxy-mmjt8 1/1 Running 1 (56m ago) 2d17h
kube-proxy-nxtnt 1/1 Running 1 (59m ago) 2d17h
kube-scheduler-ubun20-01 1/1 Running 3 (56m ago) 2d17h
kube-scheduler-ubun20-02 1/1 Running 3 (52m ago) 2d17h
kube-scheduler-ubun20-03 1/1 Running 2 (52m ago) 2d17h
nodelocaldns-bkd7p 1/1 Running 1 (52m ago) 2d17h
nodelocaldns-rnbvv 1/1 Running 2 (52m ago) 2d17h
nodelocaldns-vq28d 1/1 Running 2 (44m ago) 2d17h
4) kube-ps1 설치
- CLI에서 현재 클러스터와 네임스페이스를 보여주게하는 플러그인
root@DESKTOP-ARLDN2P:~# git clone https://github.com/jonmosco/kube-ps1.git
root@DESKTOP-ARLDN2P:~# chmod +x ./kube-ps1/kube-ps1.sh
root@DESKTOP-ARLDN2P:~# vi ~/.bashrc
#파일에 해당 부분 추가
source $HOME/kube-ps1/kube-ps1.sh
PS1='[\u@\h \W $(kube_ps1)]\$ '
KUBE_PS1_SYMBOL_ENABLE=false
root@DESKTOP-ARLDN2P:~# source ~/.bashrc
[root@DESKTOP-ARLDN2P ~ (ubun01:kube-system)]#
[root@DESKTOP-ARLDN2P ~ (ubun01:kube-system)]# k ns default
Context "ubun01" modified.
Active namespace is "default".
[root@DESKTOP-ARLDN2P ~ (ubun01:default)]#
- 결과
'쿠버네티스 > 프로젝트' 카테고리의 다른 글
쿠버네티스 프로젝트 6) Traefik (0) | 2025.02.04 |
---|---|
쿠버네티스 프로젝트 5) MetalLB를 활용한 로드밸런서와 vote 어플리케이션 만들기 (0) | 2025.02.01 |
쿠버네티스 프로젝트 4) helm (0) | 2025.02.01 |
쿠버네티스 프로젝트 2) 클러스터 설치(kubespray) (0) | 2025.01.29 |
쿠버네티스 프로젝트 1) 서버 설치 (0) | 2025.01.29 |