티스토리 뷰

로컬에서 원격으로 클러스터를 관리할 수 있는 환경을 설정할 것입니다. 

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)]#

-  결과

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함