반응형

kubectl 도구를 이용하여 Windows에서 기타 서버에 설치되어있는 k8s cluster를 사용할 수 있으며,

k8s 클러스터가 여러개일 경우에도 선택하여 사용가능하다.

 

1. k8s 설치

Window에 Terminal 또는 Powershell을 열어 아래의 명령어를 통해 kubectl을 다운받는다.

curl.exe -LO "https://dl.k8s.io/release/v1.28.4/bin/windows/amd64/kubectl.exe"

 

다운 후 Path에 등록하여도 되고 직접 kubectl 설치되어있는 폴더 호출 하여 사용해도 무관.

# C드라이브 test폴더에서 kubectl 파일 다운받았을 경우
C:\test> ./kubectl

 

 

2. k8s config 파일 복사

서버에 있는 k8s config파일의 내용을 복사한다.

cat ~/.kube/config

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCRXhNelV4TlROYUZ3MHpNekE0TVRneE16VTJOVE5hTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUURmZTZSREhXZE90Q25qczZnNHFESVprZHFzR2ZRUEE5MXlWYS9LN3AwcTZIRllvRzRQcGZHMkdUeFIKWi9HeXFqU3ZIS01KYWo1WUIvdHJ1TEtrMnoreTFGZXp0eHJFc1JkVi96UXlNOENrcGZVd1FhV2dNMGhSUTF3NgpKcTZGOHhsMlBSaDFlRjJ1eG9YT0pPOFFGam1EV2lUWVQrNEhTL0dRRE5hTlYvNlAxOXllM2VNQWhyZndQeU4xCkJKWXNwRnBTRFJLMTNpNG1IYTk3ZS9WMU9iQkFaQlJNZHhYc3FsaHQvaDR3UWFaRGF4N05tb2huVC9QOGlJTzYKamdtMC82cDBiRmhaaU5nam10TFkwdW9sd2R5Z1JyV1laSCtsclJ6b3FmbW0wUzRieEwrNC9lUXVCeFNlYzBmQwozWjlTaFJPaitiVkt6MFdmRG5PUEQ4S29kTmJqQWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSNHR3RnVGY2JTN3VxZXhPcFdCdTEreTFUU0x6QVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQUJpSXNhK0EvNgpkdzIzWVNhTm8wU0FaQ3ZUckc1eE1wVWtpRktDcXd0eXU5OFhOR29JNWlhY3pyMllsS2ZueGh6eVNzSFJuWTBNCnZUT3k3aUp2ZGhseldqUlUvcGZMS0hRMVZuSkZ6ZzQ1NDhrdE5MUHQ3eVFTL25HelJDZnJhZGhzc0FKTzJMc1cKTnRxVm5kM3hibVpFTDREamM4ZWNmYVJZMHJTMm9yQ3RoZzZQZFZhMTdQaWlWTk1zS0hGSnJpMVRPdEY5VzdKYQpNQkRLN2ttL2syZThnRmJPYzhlZHc5VGVmS09QTFBLenN6NXVzbWRCNnVyNnZxRFlUYWhtVi9UV2NrQW04aFd6ClU4bkxDcEE1VVllV3hkbTBJSGU2L0NOUmNEeXQzUEtOQTlMZm5zeHcxZjh5c24zSElSSTc2REhyVE9OK3lQUjQKRFpacjI5YjRsWkVtCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
    server: https://192.168.1.1:6443
  name: dev-k8s
contexts:
- context:
    cluster: dev-k8s
    user: pangyeon
  name: pangyeon-dev
current-context:  pangyeon-dev
kind: Config
preferences: {}
users:
- name: pangyeon
  user:
    client-certificate-data: LS0tLS1CRUdJTiBSUZJQDQWdtZ0F3SUJBZ0lJSGpubTVYZWxsbk13RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TXpBNE1qRXhNelV4TlROYUZ3MHlOREE0TWpBeE16VTJOVFphTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTJ0QVJiWnBiUmNsdFZXRjAKaldFVCt4ZlJ6NC9naG0rYlhCM3Y1clphVzNNSkxxT0JaSGNaZUJPTEFCTmtvbk5nK3BQTVRndmNQSzQ1TGlBRgo3a0orbXg5UWVUbm0va2U5Rm1FQSswNDRIMlFmczFQOTk1ZWRrZHdZZ1RBNzhUWHc5MnNkWUZ4ZjJKNHpEV3YvCjJiSjkxR0ozSUhMYTNzeGwxRlEvS1Q3ZmFYa0U1Sk5Id283ZStYYVdBTmNET0hUT1Z5SjBYTzdEamJZeHpvZ2YKRVZxeWxEYjlrM0JmZlFHNmdNZGVtR251NGZJNHMybFlUZWtzVGZBdE1Eb0VzYk1TWVpsaGh5VXl4U0wvTGc5MApQSzJTMUFoZUhuYXArT1FKUEczaHh0cW1vKzltY0RDYlZKbkx5d2g3ejBnVWtmNXYzcnpLOE8wamxMSVBSTlAzCmtwNEF4UUlEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JSNHR3RnVGY2JTN3VxZXhPcFdCdTEreTFUUwpMekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBc3MzUVpGT3V2Nmk1MGsrNTlrU252cUxuSDhNZkNod0ZxSHdZCmVESThQTUVXQXUvdDZ4Ty9CSUFhNm1QOVNvUk9WbHcwejRaRmVMeVIvU0tRQjZINXZjbzJGanpNUFNXaGVsdEYKdjBqTGdleTVjemkvVnJJUkNQNEttRjhqZ1JVMnJPRUsxblB4Tm5jOGp3d1NDamdrSmp6THNhRjBEVng3bjI1NwpBUER3b3NMMGNPMXA1OVVHOEZmWXNCUVhmZDZpZm9vb0VmVjJLSEdyZkZ1WVlqNmNhQjQ0ZjZEVWF0bmIrcXNZCk00VWd0dDhpRklKUEdwQlBIMGlGWjQ2R0dVbFZ0NGw5cFhSRVRQVEQ0K0txekM1UjIvbHJQRkdoVnpJUUFwWlkKYnRHeUI1ejlhRFB0UWJSSTNUaloxTHY2em1HUkk3OUNvSDJ6ZnJmN0svdHBTMk9JSVE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    client-key-data: LS0tLS1CRUdJTiBSU0EgUBUmJacGJSY2x0VldGMGpXRVQreGZSejQvZ2htK2JYQjN2NXJaYVczTUpMcU9CClpIY1plQk9MQUJOa29uTmcrcFBNVGd2Y1BLNDVMaUFGN2tKK214OVFlVG5tL2tlOUZtRUErMDQ0SDJRZnMxUDkKOTVlZGtkd1lnVEE3OFRYdzkyc2RZRnhmMko0ekRXdi8yYko5MUdKM0lITGEzc3hsMUZRL0tUN2ZhWGtFNUpOSAp3bzdlK1hhV0FOY0RPSFRPVnlKMFhPN0RqYll4em9nZkVWcXlsRGI5azNCZmZRRzZnTWRlbUdudTRmSTRzMmxZClRla3NUZkF0TURvRXNiTVNZWmxoaHlVeXhTTC9MZzkwUEsyUzFBaGVIbmFwK09RSlBHM2h4dHFtbys5bWNEQ2IKVkpuTHl3aDd6MGdVa2Y1djNyeks4TzBqbExJUFJOUDNrcDRBeFFJREFRQUJBb0lCQVFDTGxKcnBmY09uZXR5QgowSThXK014VUtsZXV2aXNOMXZnV0JRclo4NDBrTlBld2hxQ3R3OE85YzBvQ0hGemZ2QllyQWtrYnFEa3ZoRHY1CmpuZjZDdlRVWTE5a1ZXbGkzOFJoR0RRV0cwbDF6TnJqL0RwUHpLbTVOOXR4M2FEL045ZWxIUEU2WFBMUExldUgKTGxPaFBWbERPQ1NoMEdLS0tYenp1MkluSDNKSXhyby9XYk12MmkwdWtVcEllTkdta1JMZ1VDR09zL25qNmpjdAowOHl2ZHpZUVdwQW5QcHRvZ2RQbTgrUzJHVHBXWktlOUhEbDRqd3NpWVRVZW9IYnpRWWJBUys1SzRmdkJmUGN5CmUyZmU5ZGUxL3lpc1h1b3VHcmt1cGs1ejgveXN6eGJTVlZ2ZlhlWmhjV2dub0xrOEJ2RkY4WC9KV0ZIWE5oUisKY3JhUEg2bkJBb0dCQU81Z2FtVDdzQjhCUWJaQVR1VXlDMk13ZHkzV0l6K21NKzdyVFFLU3htR296VnJlOVhUcgpyN0dub1J4dnpVUWxkWk1HNWQ5RTB5ZFBqOFMzeW81NG16LzZOaW5iQnBaT1NDN2N4eHlOTnNRMFY4TWZxRVEwCnB4T094K1FJaG9GRC9vRXFlVmhvSFYvQ2IzOEN3K1p5VVlyejdxZk40WEZkQ2ovYTMrVnR5S0ROQW9HQkFPcjkKWVp4aU1PaXkzR0pJVlJ1SzY1N005QWsyZFF3blJDeWZTbUZXNzdHMTdRc1RWQy9uVXVueHRMNGNiVEhaRndVMgo2dXVIUUg2QUNMS2p1ek03djJ3MERsZUNlbG1TKzFaelZvS2I2Mmc2S3pUZXZ2bWhrczI0Vkxtc1BMT0lta1pGCndHSmJoT1lFcDhXcktZalZQNzJXSmg4bXhLVFBUSVhFNTZKSzZIL1pBb0dCQU0yQXUxaHhqdVU3M1IyMGxRK00KTkRyL3hrN3l4QktVUTBOZkFWWU5tUThLU25kanJYSnQyVnFyNi80cStHZ2VieDBnbmozOEJKbG9Rc1pSdUVOWgpBR2FJVy9kN2hsTkFDNFN5K3NqSGlRWmZKYVhtL2RaSEdoNkhRaFo1cnhOenZjNDNBc1BQaGp0TzBYWkt1UDVMClliY01FcHdCcHJCbmlIV0NTUEZ1MHI2bEFvR0FSUGdYUlJIZ3J2dUlDV1NYYmgwSTZMUFkwRGRtaFNtbExiK1cKMGhqMUF1Q1ZjUkc4UE04Vkc4cXdOTGdkS0d0Q0FXckw2bExwRC9lK0ZjaE9ja3dQODg4WGdvR3VMVW9oY0k4cgpqZXY3WEx6dDMzZWM3NkdIZDgrcE5sR2lBME9ObkNCdXhhOTh3eElNdDh4enhWQnBnOWhrMmZIRDkyZE1XMXFlCmJaaTB3b2tDZ1lFQTdoWUNYSXlXQkpkU3lrMnNPakVndHdLY3AwY2VxUC9sd2QwbGFya2VDU1laSEtweGY5TSsKMm93dGd6UzFTZ1pibHlvRytMQzVFRkF6cXJIK002aHdXZCtMcG8yeWhBZ1hVNm9SMDlNdG56ZUo0UGhBTzI5WQo1ejNiZHp5Q1RNZlN4RUYweWNOL21yZnI1N2VGVk51d1ZnUkVySWxkVGw5NkRaVENXS2ZDb0h3PQotLS0tLUVORCBSU0EgUFJJVkFURSBS0tLQo=

 

 

3. 복사한 파일 이동 및 조회

아래 두가지 방법으로 사용가능

 

3.1 Windows 계정 폴더로 이동

C:\Users\본인계정\  으로 이동하여 .kube 폴더 생성 후 아래에 config파일 이동

 

C:\Users\본인계정\.kube\config 에 파일이 있을 경우 바로 사용가능하다.

# C드라이브 test에 kubectl 파일이 있는 경우
PS C:\test> ./kubectl get pods -A
NAMESPACE       NAME                                                READY   STATUS        RESTARTS       AGE
ingress-nginx   ingress-nginx-controller-6544f7745b-z4lsr           1/1     Running       1 (52m ago)    24h
kube-system     coredns-5dd5756b68-2tl8x                            1/1     Terminating   0              1d
kube-system     coredns-5dd5756b68-6b55b                            1/1     Terminating   0              1d
kube-system     coredns-5dd5756b68-7fxrc                            1/1     Running       8 (52m ago)    1d
kube-system     coredns-5dd5756b68-h982d                            1/1     Running       9 (52m ago)    1d
kube-system     etcd-ubuntu                                         1/1     Running       0              1d
kube-system     kube-apiserver-ubuntu                               1/1     Running       0              1d
kube-system     kube-controller-manager-ubuntu                      1/1     Running       0              1d
kube-system     kube-proxy-2sngh                                    1/1     Running       9 (52m ago)    1d
kube-system     kube-proxy-mmsbf                                    1/1     Running       10 (52m ago)   1d
kube-system     kube-proxy-zh22k                                    1/1     Running       0              1d
kube-system     kube-scheduler-ubuntu                               1/1     Running       0              1d
kube-system     weave-net-94f8g                                     2/2     Running       24 (52m ago)   1d
kube-system     weave-net-gszsj                                     2/2     Running       30 (51m ago)   1d
kube-system     weave-net-hxknh                                     2/2     Running       1 (99d ago)    1d

 

 

3.2 사용하기 편한곳에 config 파일두고 kubectl --kubeconfig 옵션을 통해 사용

# C드라이브 내 test폴더에 config파일이 있을 경우
./kubectl get pods -A --kubeconfig=C:\test\config
NAMESPACE       NAME                                                READY   STATUS        RESTARTS       AGE
ingress-nginx   ingress-nginx-controller-6544f7745b-z4lsr           1/1     Running       1 (52m ago)    24h
kube-system     coredns-5dd5756b68-2tl8x                            1/1     Terminating   0              1d
kube-system     coredns-5dd5756b68-6b55b                            1/1     Terminating   0              1d
kube-system     coredns-5dd5756b68-7fxrc                            1/1     Running       8 (52m ago)    1d
kube-system     coredns-5dd5756b68-h982d                            1/1     Running       9 (52m ago)    1d
kube-system     etcd-ubuntu                                         1/1     Running       0              1d
kube-system     kube-apiserver-ubuntu                               1/1     Running       0              1d
kube-system     kube-controller-manager-ubuntu                      1/1     Running       0              1d
kube-system     kube-proxy-2sngh                                    1/1     Running       9 (52m ago)    1d
kube-system     kube-proxy-mmsbf                                    1/1     Running       10 (52m ago)   1d
kube-system     kube-proxy-zh22k                                    1/1     Running       0              1d
kube-system     kube-scheduler-ubuntu                               1/1     Running       0              1d
kube-system     weave-net-94f8g                                     2/2     Running       24 (52m ago)   1d
kube-system     weave-net-gszsj                                     2/2     Running       30 (51m ago)   1d
kube-system     weave-net-hxknh                                     2/2     Running       1 (99d ago)    1d

 

 

4. k8s 클러스터가 여러개일경우

config 파일에 등록한다.

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJTC9XdXZlY1ZxL013RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TXpBNE1qRXhNelV4TlROYUZ3MHpNekE0TVRneE16VTJOVE5hTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUURmZTZSREhXZE90Q25qczZnNHFESVprZHFzR2ZRUEE5MXlWYS9LN3AwcTZIRllvRzRQcGZHMkdUeFIKWi9HeXFqU3ZIS01KYWo1WUIvdHJ1TEtrMnoreTFGZXp0eHJFc1JkVi96UXlNOENrcGZVd1FhV2dNMGhSUTF3NgpKcTZGOHhsMlBSaDFlRjJ1eG9YT0pPOFFGam1EV2lUWVQrNEhTL0dRRE5hTlYvNlAxOXllM2VNQWhyZndQeU4xCkJKWXNwRnBTRFJLMTNpNG1IYTk3ZS9WMU9iQkFaQlJNZHhYc3FsaHQvaDR3UWFaRGF4N05tb2huVC9QOGlJTzYKamdtMC82cDBiRmhaaU5nam10TFkwdW9sd2R5Z1JyV1laSCtsclJ6b3FmbW0wUzRieEwrNC9lUXVCeFNlYzBmQwozWjlTaFJPaitiVkt6MFdmRG5PUEQ4S29kTmJqQWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSNHR3RnVGY2JTN3VxZXhPcFdCdTEreTFUU0x6QVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQUJpSXNhK0EvNgpkdzIzWVNhTm8wU0FaQ3ZUckc1eE1wVWtpRktDcXd0eXU5OFhOR29JNWlhY3pyMllsS2ZueGh6eVNzSFJuWTBNCnZUT3k3aUp2ZGhseldqUlUvcGZMS0hRMVZuSkZ6ZzQ1NDhrdE5MUHQ3eVFTL25HelJDZnJhZGhzc0FKTzJMc1cKTnRxVm5kM3hibVpFTDREamM4ZWNmYVJZMHJTMm9yQ3RoZzZQZFZhMTdQaWlWTk1zS0hGSnJpMVRPdEY5VzdKYQpNQkRLN2ttL2syZThnRmJPYzhlZHc5VGVmS09QTFBLenN6NXVzbWRCNnVyNnZxRFlUYWhtVi9UV2NrQW04aFd6ClU4bkxDcEE1VVllV3hkbTBJSGU2L0NOUmNEeXQzUEtOQTlMZm5zeHcxZjh5c24zSElSSTc2REhyVE9OK3lQUjQKRFpacjI5YjRsWkVtCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
    server: https://192.168.1.1:6443
  name: dev-k8s
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJTC9XdXZlY1ZxL013RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TXpBNE1qRXhNelV4TlROYUZ3MHpNekE0TVRneE16VTJOVE5hTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUURmZTZSREhXZE90Q25qczZnNHFESVprZHFzR2ZRUEE5MXlWYS9LN3AwcTZIRllvRzRQcGZHMkdUeFIKWi9HeXFqU3ZIS01KYWo1WUIvdHJ1TEtrMnoreTFGZXp0eHJFc1JkVi96UXlNOENrcGZVd1FhV2dNMGhSUTF3NgpKcTZGOHhsMlBSaDFlRjJ1eG9YT0pPOFFGam1EV2lUWVQrNEhTL0dRRE5hTlYvNlAxOXllM2VNQWhyZndQeU4xCkJKWXNwRnBTRFJLMTNpNG1IYTk3ZS9WMU9iQkFaQlJNZHhYc3FsaHQvaDR3UWFaRGF4N05tb2huVC9QOGlJTzYKamdtMC82cDBiRmhaaU5nam10TFkwdW9sd2R5Z1JyV1laSCtsclJ6b3FmbW0wUzRieEwrNC9lUXVCeFNlYzBmQwozWjlTaFJPaitiVkt6MFdmRG5PUEQ4S29kTmJqQWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSNHR3RnVGY2JTN3VxZXhPcFdCdTEreTFUU0x6QVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQUJpSXNhK0EvNgpkdzIzWVNhTm8wU0FaQ3ZUckc1eE1wVWtpRktDcXd0eXU5OFhOR29JNWlhY3pyMllsS2ZueGh6eVNzSFJuWTBNCnZUT3k3aUp2ZGhseldqUlUvcGZMS0hRMVZuSkZ6ZzQ1NDhrdE5MUHQ3eVFTL25HelJDZnJhZGhzc0FKTzJMc1cKTnRxVm5kM3hibVpFTDREamM4ZWNmYVJZMHJTMm9yQ3RoZzZQZFZhMTdQaWlWTk1zS0hGSnJpMVRPdEY5VzdKYQpNQkRLN2ttL2syZThnRmJPYzhlZHc5VGVmS09QTFBLenN6NXVzbWRCNnVyNnZxRFlUYWhtVi9UV2NrQW04aFd6ClU4bkxDcEE1VVllV3hkbTBJSGU2L0NOUmNEeXQzUEtOQTlMZm5zeHcxZjh5c24zSElSSTc2REhyVE9OK3lQUjQKRFpacjI5YjRsWkVtCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
    server: https://192.168.2.1:6443
  name: stg-k8s
contexts:
- context:
    cluster: dev-k8s
    user: pangyeon-dev
  name: pangyeon-dev
- context:
    cluster: stg-k8s
    user: pangyeon-stg
  name: pangyeon-stg
current-context: pangyeon-dev
kind: Config
preferences: {}
users:
- name: pangyeon-dev
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJSGpubTVYZWxsbk13RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TXpBNE1qRXhNelV4TlROYUZ3MHlOREE0TWpBeE16VTJOVFphTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTJ0QVJiWnBiUmNsdFZXRjAKaldFVCt4ZlJ6NC9naG0rYlhCM3Y1clphVzNNSkxxT0JaSGNaZUJPTEFCTmtvbk5nK3BQTVRndmNQSzQ1TGlBRgo3a0orbXg5UWVUbm0va2U5Rm1FQSswNDRIMlFmczFQOTk1ZWRrZHdZZ1RBNzhUWHc5MnNkWUZ4ZjJKNHpEV3YvCjJiSjkxR0ozSUhMYTNzeGwxRlEvS1Q3ZmFYa0U1Sk5Id283ZStYYVdBTmNET0hUT1Z5SjBYTzdEamJZeHpvZ2YKRVZxeWxEYjlrM0JmZlFHNmdNZGVtR251NGZJNHMybFlUZWtzVGZBdE1Eb0VzYk1TWVpsaGh5VXl4U0wvTGc5MApQSzJTMUFoZUhuYXArT1FKUEczaHh0cW1vKzltY0RDYlZKbkx5d2g3ejBnVWtmNXYzcnpLOE8wamxMSVBSTlAzCmtwNEF4UUlEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JSNHR3RnVGY2JTN3VxZXhPcFdCdTEreTFUUwpMekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBc3MzUVpGT3V2Nmk1MGsrNTlrU252cUxuSDhNZkNod0ZxSHdZCmVESThQTUVXQXUvdDZ4Ty9CSUFhNm1QOVNvUk9WbHcwejRaRmVMeVIvU0tRQjZINXZjbzJGanpNUFNXaGVsdEYKdjBqTGdleTVjemkvVnJJUkNQNEttRjhqZ1JVMnJPRUsxblB4Tm5jOGp3d1NDamdrSmp6THNhRjBEVng3bjI1NwpBUER3b3NMMGNPMXA1OVVHOEZmWXNCUVhmZDZpZm9vb0VmVjJLSEdyZkZ1WVlqNmNhQjQ0ZjZEVWF0bmIrcXNZCk00VWd0dDhpRklKUEdwQlBIMGlGWjQ2R0dVbFZ0NGw5cFhSRVRQVEQ0K0txekM1UjIvbHJQRkdoVnpJUUFwWlkKYnRHeUI1ejlhRFB0UWJSSTNUaloxTHY2em1HUkk3OUNvSDJ6ZnJmN0svdHBTMk9JSVE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBMnRBUmJacGJSY2x0VldGMGpXRVQreGZSejQvZ2htK2JYQjN2NXJaYVczTUpMcU9CClpIY1plQk9MQUJOa29uTmcrcFBNVGd2Y1BLNDVMaUFGN2tKK214OVFlVG5tL2tlOUZtRUErMDQ0SDJRZnMxUDkKOTVlZGtkd1lnVEE3OFRYdzkyc2RZRnhmMko0ekRXdi8yYko5MUdKM0lITGEzc3hsMUZRL0tUN2ZhWGtFNUpOSAp3bzdlK1hhV0FOY0RPSFRPVnlKMFhPN0RqYll4em9nZkVWcXlsRGI5azNCZmZRRzZnTWRlbUdudTRmSTRzMmxZClRla3NUZkF0TURvRXNiTVNZWmxoaHlVeXhTTC9MZzkwUEsyUzFBaGVIbmFwK09RSlBHM2h4dHFtbys5bWNEQ2IKVkpuTHl3aDd6MGdVa2Y1djNyeks4TzBqbExJUFJOUDNrcDRBeFFJREFRQUJBb0lCQVFDTGxKcnBmY09uZXR5QgowSThXK014VUtsZXV2aXNOMXZnV0JRclo4NDBrTlBld2hxQ3R3OE85YzBvQ0hGemZ2QllyQWtrYnFEa3ZoRHY1CmpuZjZDdlRVWTE5a1ZXbGkzOFJoR0RRV0cwbDF6TnJqL0RwUHpLbTVOOXR4M2FEL045ZWxIUEU2WFBMUExldUgKTGxPaFBWbERPQ1NoMEdLS0tYenp1MkluSDNKSXhyby9XYk12MmkwdWtVcEllTkdta1JMZ1VDR09zL25qNmpjdAowOHl2ZHpZUVdwQW5QcHRvZ2RQbTgrUzJHVHBXWktlOUhEbDRqd3NpWVRVZW9IYnpRWWJBUys1SzRmdkJmUGN5CmUyZmU5ZGUxL3lpc1h1b3VHcmt1cGs1ejgveXN6eGJTVlZ2ZlhlWmhjV2dub0xrOEJ2RkY4WC9KV0ZIWE5oUisKY3JhUEg2bkJBb0dCQU81Z2FtVDdzQjhCUWJaQVR1VXlDMk13ZHkzV0l6K21NKzdyVFFLU3htR296VnJlOVhUcgpyN0dub1J4dnpVUWxkWk1HNWQ5RTB5ZFBqOFMzeW81NG16LzZOaW5iQnBaT1NDN2N4eHlOTnNRMFY4TWZxRVEwCnB4T094K1FJaG9GRC9vRXFlVmhvSFYvQ2IzOEN3K1p5VVlyejdxZk40WEZkQ2ovYTMrVnR5S0ROQW9HQkFPcjkKWVp4aU1PaXkzR0pJVlJ1SzY1N005QWsyZFF3blJDeWZTbUZXNzdHMTdRc1RWQy9uVXVueHRMNGNiVEhaRndVMgo2dXVIUUg2QUNMS2p1ek03djJ3MERsZUNlbG1TKzFaelZvS2I2Mmc2S3pUZXZ2bWhrczI0Vkxtc1BMT0lta1pGCndHSmJoT1lFcDhXcktZalZQNzJXSmg4bXhLVFBUSVhFNTZKSzZIL1pBb0dCQU0yQXUxaHhqdVU3M1IyMGxRK00KTkRyL3hrN3l4QktVUTBOZkFWWU5tUThLU25kanJYSnQyVnFyNi80cStHZ2VieDBnbmozOEJKbG9Rc1pSdUVOWgpBR2FJVy9kN2hsTkFDNFN5K3NqSGlRWmZKYVhtL2RaSEdoNkhRaFo1cnhOenZjNDNBc1BQaGp0TzBYWkt1UDVMClliY01FcHdCcHJCbmlIV0NTUEZ1MHI2bEFvR0FSUGdYUlJIZ3J2dUlDV1NYYmgwSTZMUFkwRGRtaFNtbExiK1cKMGhqMUF1Q1ZjUkc4UE04Vkc4cXdOTGdkS0d0Q0FXckw2bExwRC9lK0ZjaE9ja3dQODg4WGdvR3VMVW9oY0k4cgpqZXY3WEx6dDMzZWM3NkdIZDgrcE5sR2lBME9ObkNCdXhhOTh3eElNdDh4enhWQnBnOWhrMmZIRDkyZE1XMXFlCmJaaTB3b2tDZ1lFQTdoWUNYSXlXQkpkU3lrMnNPakVndHdLY3AwY2VxUC9sd2QwbGFya2VDU1laSEtweGY5TSsKMm93dGd6UzFTZ1pibHlvRytMQzVFRkF6cXJIK002aHdXZCtMcG8yeWhBZ1hVNm9SMDlNdG56ZUo0UGhBTzI5WQo1ejNiZHp5Q1RNZlN4RUYweWNOL21yZnI1N2VGVk51d1ZnUkVySWxkVGw5NkRaVENXS2ZDb0h3PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
- name: pangyeon-stg
  user:
    client-certificate-data: LS0tLS1CRUdJTiGSDKLNMFKGHtLS0tCk1JSURJVENDQWdubTVYZWxsbk13RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TXpBNE1qRXhNelV4TlROYUZ3MHlOREE0TWpBeE16VTJOVFphTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTJ0QVJiWnBiUmNsdFZXRjAKaldFVCt4ZlJ6NC9naG0rYlhCM3Y1clphVzNNSkxxT0JaSGNaZUJPTEFCTmtvbk5nK3BQTVRndmNQSzQ1TGlBRgo3a0orbXg5UWVUbm0va2U5Rm1FQSswNDRIMlFmczFQOTk1ZWRrZHdZZ1RBNzhUWHc5MnNkWUZ4ZjJKNHpEV3YvCjJiSjkxR0ozSUhMYTNzeGwxRlEvS1Q3ZmFYa0U1Sk5Id283ZStYYVdBTmNET0hUT1Z5SjBYTzdEamJZeHpvZ2YKRVZxeWxEYjlrM0JmZlFHNmdNZGVtR251NGZJNHMybFlUZWtzVGZBdE1Eb0VzYk1TWVpsaGh5VXl4U0wvTGc5MApQSzJTMUFoZUhuYXArT1FKUEczaHh0cW1vKzltY0RDYlZKbkx5d2g3ejBnVWtmNXYzcnpLOE8wamxMSVBSTlAzCmtwNEF4UUlEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JSNHR3RnVGY2JTN3VxZXhPcFdCdTEreTFUUwpMekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBc3MzUVpGT3V2Nmk1MGsrNTlrU252cUxuSDhNZkNod0ZxSHdZCmVESThQTUVXQXUvdDZ4Ty9CSUFhNm1QOVNvUk9WbHcwejRaRmVMeVIvU0tRQjZINXZjbzJGanpNUFNXaGVsdEYKdjBqTGdleTVjemkvVnJJUkNQNEttRjhqZ1JVMnJPRUsxblB4Tm5jOGp3d1NDamdrSmp6THNhRjBEVng3bjI1NwpBUER3b3NMMGNPMXA1OVVHOEZmWXNCUVhmZDZpZm9vb0VmVjJLSEdyZkZ1WVlqNmNhQjQ0ZjZEVWF0bmIrcXNZCk00VWd0dDhpRklKUEdwQlBIMGlGWjQ2R0dVbFZ0NGw5cFhSRVRQVEQ0K0txekM1UjIvbHJQRkdoVnpJUUFwWlkKYnRHeUI1ejlhRFB0UWJSSTNUaloxTHY2em1HUkk3OUNvSDJ6ZnJmN0svdHBTMk9JSVE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJGSNRYJASQAWpNSUlFcFFJQkFBS0NBUUVBMnRBUmJacGJSY2x0VldGMGpXRVQreGZSejQvZ2htK2JYQjN2NXJaYVczTUpMcU9CClpIY1plQk9MQUJOa29uTmcrcFBNVGd2Y1BLNDVMaUFGN2tKK214OVFlVG5tL2tlOUZtRUErMDQ0SDJRZnMxUDkKOTVlZGtkd1lnVEE3OFRYdzkyc2RZRnhmMko0ekRXdi8yYko5MUdKM0lITGEzc3hsMUZRL0tUN2ZhWGtFNUpOSAp3bzdlK1hhV0FOY0RPSFRPVnlKMFhPN0RqYll4em9nZkVWcXlsRGI5azNCZmZRRzZnTWRlbUdudTRmSTRzMmxZClRla3NUZkF0TURvRXNiTVNZWmxoaHlVeXhTTC9MZzkwUEsyUzFBaGVIbmFwK09RSlBHM2h4dHFtbys5bWNEQ2IKVkpuTHl3aDd6MGdVa2Y1djNyeks4TzBqbExJUFJOUDNrcDRBeFFJREFRQUJBb0lCQVFDTGxKcnBmY09uZXR5QgowSThXK014VUtsZXV2aXNOMXZnV0JRclo4NDBrTlBld2hxQ3R3OE85YzBvQ0hGemZ2QllyQWtrYnFEa3ZoRHY1CmpuZjZDdlRVWTE5a1ZXbGkzOFJoR0RRV0cwbDF6TnJqL0RwUHpLbTVOOXR4M2FEL045ZWxIUEU2WFBMUExldUgKTGxPaFBWbERPQ1NoMEdLS0tYenp1MkluSDNKSXhyby9XYk12MmkwdWtVcEllTkdta1JMZ1VDR09zL25qNmpjdAowOHl2ZHpZUVdwQW5QcHRvZ2RQbTgrUzJHVHBXWktlOUhEbDRqd3NpWVRVZW9IYnpRWWJBUys1SzRmdkJmUGN5CmUyZmU5ZGUxL3lpc1h1b3VHcmt1cGs1ejgveXN6eGJTVlZ2ZlhlWmhjV2dub0xrOEJ2RkY4WC9KV0ZIWE5oUisKY3JhUEg2bkJBb0dCQU81Z2FtVDdzQjhCUWJaQVR1VXlDMk13ZHkzV0l6K21NKzdyVFFLU3htR296VnJlOVhUcgpyN0dub1J4dnpVUWxkWk1HNWQ5RTB5ZFBqOFMzeW81NG16LzZOaW5iQnBaT1NDN2N4eHlOTnNRMFY4TWZxRVEwCnB4T094K1FJaG9GRC9vRXFlVmhvSFYvQ2IzOEN3K1p5VVlyejdxZk40WEZkQ2ovYTMrVnR5S0ROQW9HQkFPcjkKWVp4aU1PaXkzR0pJVlJ1SzY1N005QWsyZFF3blJDeWZTbUZXNzdHMTdRc1RWQy9uVXVueHRMNGNiVEhaRndVMgo2dXVIUUg2QUNMS2p1ek03djJ3MERsZUNlbG1TKzFaelZvS2I2Mmc2S3pUZXZ2bWhrczI0Vkxtc1BMT0lta1pGCndHSmJoT1lFcDhXcktZalZQNzJXSmg4bXhLVFBUSVhFNTZKSzZIL1pBb0dCQU0yQXUxaHhqdVU3M1IyMGxRK00KTkRyL3hrN3l4QktVUTBOZkFWWU5tUThLU25kanJYSnQyVnFyNi80cStHZ2VieDBnbmozOEJKbG9Rc1pSdUVOWgpBR2FJVy9kN2hsTkFDNFN5K3NqSGlRWmZKYVhtL2RaSEdoNkhRaFo1cnhOenZjNDNBc1BQaGp0TzBYWkt1UDVMClliY01FcHdCcHJCbmlIV0NTUEZ1MHI2bEFvR0FSUGdYUlJIZ3J2dUlDV1NYYmgwSTZMUFkwRGRtaFNtbExiK1cKMGhqMUF1Q1ZjUkc4UE04Vkc4cXdOTGdkS0d0Q0FXckw2bExwRC9lK0ZjaE9ja3dQODg4WGdvR3VMVW9oY0k4cgpqZXY3WEx6dDMzZWM3NkdIZDgrcE5sR2lBME9ObkNCdXhhOTh3eElNdDh4enhWQnBnOWhrMmZIRDkyZE1XMXFlCmJaaTB3b2tDZ1lFQTdoWUNYSXlXQkpkU3lrMnNPakVndHdLY3AwY2VxUC9sd2QwbGFya2VDU1laSEtweGY5TSsKMm93dGd6UzFTZ1pibHlvRytMQzVFRkF6cXJIK002aHdXZCtMcG8yeWhBZ1hVNm9SMDlNdG56ZUo0UGhBTzI5WQo1ejNiZHp5Q1RNZlN4RUYweWNOL21yZnI1N2VGVk51d1ZnUkVySWxkVGw5NkRaVENXS2ZDb0h3PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=

 

 

5. use-context 옵션을 통해 클러스터를 선택한다.

PS C:\test> ./kubectl config use-context pangyeon-dev
Switched to context "pangyeon-dev".

 

 

6. 선택 후 조회

./kubectl get pods -A
NAMESPACE       NAME                                                READY   STATUS        RESTARTS       AGE
ingress-nginx   ingress-nginx-controller-6544f7745b-z4lsr           1/1     Running       1 (52m ago)    24h
kube-system     coredns-5dd5756b68-2tl8x                            1/1     Terminating   0              1d
kube-system     coredns-5dd5756b68-6b55b                            1/1     Terminating   0              1d
kube-system     coredns-5dd5756b68-7fxrc                            1/1     Running       8 (52m ago)    1d
kube-system     coredns-5dd5756b68-h982d                            1/1     Running       9 (52m ago)    1d
kube-system     etcd-ubuntu                                         1/1     Running       0              1d
kube-system     kube-apiserver-ubuntu                               1/1     Running       0              1d
kube-system     kube-controller-manager-ubuntu                      1/1     Running       0              1d
kube-system     kube-proxy-2sngh                                    1/1     Running       9 (52m ago)    1d
kube-system     kube-proxy-mmsbf                                    1/1     Running       10 (52m ago)   1d
kube-system     kube-proxy-zh22k                                    1/1     Running       0              1d
kube-system     kube-scheduler-ubuntu                               1/1     Running       0              1d
kube-system     weave-net-94f8g                                     2/2     Running       24 (52m ago)   1d
kube-system     weave-net-gszsj                                     2/2     Running       30 (51m ago)   1d
kube-system     weave-net-hxknh                                     2/2     Running       1 (99d ago)    1d

 

 

참고

https://kubernetes.io/ko/docs/tasks/tools/install-kubectl-windows/

https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/

반응형
반응형

 

1. etcdctl leader 및 list 조회 명령어 입력시 Error: context deadline exceeded 발생할 경우 cacert, cert, key를 입력해준다.

# 아래 명령어 중 하나 사용
etcdctl member list --cacert="/etc/kubernetes/pki/etcd/ca.crt" --cert="/etc/kubernetes/pki/etcd/peer.crt" --key="/etc/kubernetes/pki/etcd/peer.key"
etcdctl endpoint status --cluster --cacert="/etc/kubernetes/pki/etcd/ca.crt" --cert="/etc/kubernetes/pki/etcd/peer.crt" --key="/etc/kubernetes/pki/etcd/peer.key"
or
etcdctl member list --cacert="/etc/kubernetes/pki/etcd/ca.crt" --cert="/etc/kubernetes/pki/etcd/server.crt" --key="/etc/kubernetes/pki/etcd/server.key"
etcdctl endpoint status --cluster --cacert="/etc/kubernetes/pki/etcd/ca.crt" --cert="/etc/kubernetes/pki/etcd/server.crt" --key="/etc/kubernetes/pki/etcd/server.key"

 

 

2. etcdctl 사용시 open /etc/kubernetes/pki/etcd/ca.crt: permission denied 발생할 경우

kube-system의 etcd 버전과 맞춰준다.

cat /etc/kubernetes/manifests/etcd.yaml | grep image
# image: image: registry.k8s.io/etcd:3.5.9-0 
# 위 image 버전확인 후 etcdctl 다운
# https://github.com/etcd-io/etcd/releases
curl https://storage.googleapis.com/etcd/v3.5.9/etcd-v3.5.9-linux-amd64.tar.gz -o ./etcd-v3.5.9-linux-amd64.tar.gz
반응형
반응형

1. pods 전체삭제

 # Pods 전체 삭제
 kubectl delete pods --all --all-namespaces
 kubectl delete pods --all -A
 
 # Namespace 별 삭제
 kubectl delete pods --all -n test

 

 

2. pods 특정 이름으로 삭제

<namespace> 자리에 namespace 입력 - test

/application/ 자리에 삭제할 이름 입력 - /nginx/

kubectl get pods -n <namespace> --no-headers=true | awk '/application/{print $1}'| xargs  kubectl delete -n <namespace> pod

#namesapce가 test이고 test namespace안에 nginx라는 이름이 들어가는 pods 전체 삭제
kubectl get pods -n test --no-headers=true | awk '/nginx/{print $1}'| xargs  kubectl delete -n test pod

 

 

참고 : 

https://www.baeldung.com/linux/kubernetes-delete-all-pods

https://stackoverflow.com/questions/59473707/kubernetes-pod-delete-with-pattern-match-or-wildcard

반응형
반응형

 

Version

- Ubuntu 20.04

- Docker 24.0.5

- kubernetes 1.28.0

 

※ Master 1대 Woker 2대

 

1. 전부 root 계정으로 시작한다.

sudo -i

 

2. 모든 서버 Hostname 변경

변경 안 할 시 node 등록할 때 에러 발생

# Master server 1
hostnamectl set-hostname Master

# Worker server 1
hostnamectl set-hostname Node1

# Worker server 2
hostnamectl set-hostname Node2

 

3. Docker 설치 (Master, Woker 전부 진행)

apt-get update
apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
 echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
# 도커까지 설치
apt-get install docker-ce docker-ce-cli containerd.io

# containerd만 설치할경우
apt-get install containerd.io

모든 서버에 설치 후 Docker Version 확인

 docker version

 

4. Kubernetes (k8s) 설치 (Master, Worker 전부 실행)

swapoff -a && sudo sed -i '/swap/s/^/#/' /etc/fstab

 

iptable 설정

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

 

kubectl, kubeadm, kubelet 설치

(2024.03.12 기준 https://kubernetes.io/blog/2023/08/15/pkgs-k8s-io-introduction/#how-to-migrate 해당URL을 보고 curl 과 deb 설정한다)

apt-get update
apt-get install -y apt-transport-https ca-certificates curl

 

curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg| gpg -o /usr/share/keyrings/kubernetes-archive-keyring.gpg --dearmor
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
systemctl daemon-reload
systemctl restart kubelet

 

5. kubeadm init (Master에만 진행)

kubeadm init 실행시 아래 에러 발생

unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService" 

참고 : https://kubernetes.io/docs/setup/production-environment/container-runtimes/

(Configuring the systemd cgroup driver의 Note 부분 참고)

해당 작업만 모든 서버(Master, Worker에서 진행)

# 해당작업만 모든 서버(Master, Worker)에서 진행
containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
systemctl restart containerd

작업 후 아래 명령어 진행

kubeadm init

정상적으로 성공할 경우 아래 값 반환 해당값 메모장에 임시 저장

kubeadm join 192.x.x.x:6443 --token c5l89v.9ao1r5texepx06d8 \
	--discovery-token-ca-cert-hash sha256:50cb3eaxe334612e81c2342790130801afd70ddb9967a06bb0b202141748354f

모든 User를 위해 명령어 등록

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

 

6. Pod Network 설치 (Master에서만 진행)

https://cloud.weave.works 서버가 이상하므로 github에서 다운받는다. 현재 작성일 기준 2.8.1이 최신

kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s-1.11.yaml

 

7. Node 등록 (Woker에서만 진행)

5번에서 저장한 kubeadm join 입력

kubeadm join 192.x.x.x:6443 --token c5l89v.9ao1r5texepx06d8 \
	--discovery-token-ca-cert-hash sha256:50cb3eaxe334612e81c2342790130801afd70ddb9967a06bb0b202141748354f

 

8. Master에서 확인

Master에서 아래 명령어 실행

kubectl get nodes -o wide

해당 가이드대로 진행하였으면 아래 사진에서 ubuntu -> master로 나와야함

 

 

반응형
반응형

시크릿(Secret) - https://kubernetes.io/ko/docs/concepts/configuration/secret/

시크릿은 암호, 토큰 또는 키와 같은 소량의 중요한 데이터를 포함하는 오브젝트이다. 이를 사용하지 않으면 중요한 정보가 파드 명세나 컨테이너 이미지에 포함될 수 있다. 시크릿을 사용한다는 것은 사용자의 기밀 데이터를 애플리케이션 코드에 넣을 필요가 없음을 뜻한다.

 

쿠버네티스에서 Deployment.yaml 작성시 Private Docker Registry, Nexus, Harbor 와 같은 것에 있는 이미지를 가져올 때Pull 권한이 없다고 하는 경우가 있다. 이 경우 secret 생성 후  deployment.yaml에 imagePullSecrets를 입력하면된다.(물론 모든 Worker Node에 docker login해주면되긴하지만, 항상 해당 registry 만 사용할건아니니까...)

 

1. secret 생성

secret 생성시 주의할 점은 namespace가 있을 경우 뒤에 -n 옵션을 통해 namespace를 설정해주어야한다.

없으면 default로 설정되며, 해당 pod가 namespace를 가질 경우 반드시 namespace를 설정해주어야한다.

1.1 default

kubectl create secret docker-registry secret-name \
  --docker-email=test@test.com \  # 이 부분은 생략가능
  --docker-username=harborId \ 
  --docker-password=harborPw \
  --docker-server=http://harborurl.com  # harbor or nexus or private registry

1.2 namesapce

kubectl create secret docker-registry secret-name \
  --docker-email=test@test.com \  # 이 부분은 생략가능
  --docker-username=harborId \ 
  --docker-password=harborPw \
  --docker-server=http://harborurl.com \ # harbor or nexus or private registry
  -n namespaceoption

 

2. imagePullSecrets 추가

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: test
        image: harborurl.com:latest
      imagePullSecrets:
      - name: secret-name # secret에서 생성한 이름

 

반응형

'Develop > k8s' 카테고리의 다른 글

ETCD Leader 및 List 조회  (0) 2023.11.21
k8s pods 전체 삭제 및 특정 이름 전체 삭제  (0) 2023.11.09
Ubuntu 20.04 kubernetes(k8s) 설치  (0) 2023.08.21
Nginx Ingress Controller Annotations 설정  (0) 2022.12.08
Pod Scheduling  (0) 2022.09.26
반응형

Nginx Ingress Controller 사용시 Nginx 와 관련된 기본적인 설정할 때 Annotaions기능을 통해 적용할 수 있다

예를들면 기본적으로 Nginx Ingress Controller 에 client_max_body_size 가 1m로 설정되어있는데,

ingress.yaml 의 Annotations을 통해 Nginx Controller Pod에 접속하지 않아도 Nginx 설정을 할 수 있다.

 

단, Nginx Ingress Controller의 경우 kubernetes Ingress Controller(Community Version)와

Nginx Ingress Controller가 있는데, 이를 잘 보고 적용해야한다.

 

1. kubernetes Ingress Controller(Community Version)

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress-with-annotations
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: 8m   
spec:
  rules:
     ...

https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/

 

2. Nginx Ingress Controller

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress-with-annotations
  annotations:
    nginx.org/client-max-body-size: 4m
spec:
  rules:
     ...

https://docs.nginx.com/nginx-ingress-controller/configuration/ingress-resources/advanced-configuration-with-annotations

 

 

반응형

'Develop > k8s' 카테고리의 다른 글

ETCD Leader 및 List 조회  (0) 2023.11.21
k8s pods 전체 삭제 및 특정 이름 전체 삭제  (0) 2023.11.09
Ubuntu 20.04 kubernetes(k8s) 설치  (0) 2023.08.21
k8s Docker Private Registry(Nexus, Harbor) secret  (0) 2023.01.16
Pod Scheduling  (0) 2022.09.26
반응형

1. Label Selector

kubectl get nodes --show-labels

 

kubectl label ndoes [nodeName] [key=value]
spec:
  nodeSelector:
    key: value

2. cordon / uncordon

kubectl cordon [nodeName]
kubectl uncordon [nodeName]

 

3. Affinity

반응형

+ Recent posts