1. 리소스 별 명령어
쿠버네티스는 모든 것이 리소스로 표현된다. 쿠버네티스는 Pod 리소스 외에 Service, ReplicaSet, Deployment 등 다양한 리소스를 포함하고 있다. Pod외에 다른 리소스에 대한 명령을 수행하고 싶으면 어떻게 할 수 있을까? 기존에 Pod라고 적은 부분을 다른 리소스로 변경하여 명령을 실행하면 된다.
서비스 리소스에 대해서 살펴보고 싶다면
student@Master:~$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 41h
student@Master:~$
student@Master:~$ kubectl describe service kubernetes
Name: kubernetes
Namespace: default
Labels: component=apiserver
provider=kubernetes
Annotations: <none>
Selector: <none>
Type: ClusterIP
IP: 10.43.0.1
Port: https 443/TCP
TargetPort: 6443/TCP
Endpoints: 192.168.58.11:6443
Session Affinity: None
Events: <none>
student@Master:~$
쿠버네티스 클러스터를 구축하기 위해서 사용한 Node 또한 쿠버네티스의 리소스 중 하나로 표현된다.
student@Master:~$ kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready master 41h v1.18.6+k3s1
worker Ready <none> 31h v1.18.6+k3s1
student@Master:~$
student@Master:~$ kubectl describe node master
Name: master
Roles: master
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/instance-type=k3s
beta.kubernetes.io/os=linux
k3s.io/hostname=master
k3s.io/internal-ip=192.168.58.11
kubernetes.io/arch
2. 네임스페이스
쿠버네티스에는 네임스페이스라는 개념이 있다. 쿠버네티스 클러스터를 논리적으로 나누는 역할을 한다. Pod, Service 와 같은 리소스가 네임스페이스별로 생성되고 사용자 접근제어, Network 접근 제어 정책을 네임스페이스별로 서로 다르게 가져갈 수 있다.
네임스페이스도 하나의 리소스로 표현된다.
student@Master:~$ kubectl get namespace
NAME STATUS AGE
default Active 41h
kube-system Active 41h
kube-public Active 41h
kube-node-lease Active 41h
student@Master:~$
student@Master:~$ kubectl describe namespace kube-system
Name: kube-system
Labels: <none>
Annotations: <none>
Status: Active
No resource quota.
No LimitRange resource.
student@Master:~$
º default : 기본 네임스페이스로 아무런 옵션없이 컨테이너를 만들게 되면 default 네임스페이스에 생성된다.
º kube-system: 쿠버네티스의 핵심 컴포넌트들이 들어있는 네임스페이스로, 네트워크 설정, DNS 서버등 중요한 역할을 담당하는 컨테이너가 존재한다.
º kube-public: 외부로 공개 가능한 리소스를 담고 있는 네임스페이스이다.
º kube-node-lease: 노드가 살아있는지 마스터에 알리는 용도로 존재하는 네임스페이스이다.
명령어를 입력할 때, --namespace 옵션 (-n) 을 이용하여 특정 네임스페이스에 리소스를 생성할 수 있다.
student@Master:~$ kubectl run mynginx-ns --image nginx --namespace kube-system
pod/mynginx-ns created
student@Master:~$
student@Master:~$ kubectl get pod mynginx-ns -n kube-system
NAME READY STATUS RESTARTS AGE
mynginx-ns 1/1 Running 0 15s
student@Master
student@Master
student@Master:~$ kubectl get pod
NAME READY STATUS RESTARTS AGE
mynginx 1/1 Running 1 70m
student@Master:~$ kubectl delete pod mynginx-ns -n kube-system
pod "mynginx-ns" deleted
student@Master:~$
네임스페이스 옵션을 생략하면 기본 네임스페이스인 default 네임스페이스로 설정된다. 다음 두가지 명령어는 같은 결과를 보여준다.
student@Master:~$ kubectl get pod -n default
NAME READY STATUS RESTARTS AGE
mynginx 1/1 Running 1 73m
student@Master:~$
student@Master:~$
student@Master:~$ kubectl get pod
NAME READY STATUS RESTARTS AGE
mynginx 1/1 Running 1 73m
student@Master:~$
3. 자동완성 기능
kubectl 명령을 매번 일일이 입력하는 것이 귀찮을 수도 있다. 쿠버네티스는 이를 해결하기 위해서 자동으로 명령을 완성시켜주는 스크립트를 제공한다.
~~~ 추후 작성
4. 즉석 리소스 생성
YAML 명령 정의서를 이용하여 리소스를 생성할 때 매번 YAML 파일을 만들어서 생성하지 않고, 다음과 같이 cat & here document 명령 조합을 활용하여 즉석으로 리소스를 생성할 수 있다.
student@Master:~$ cat << EOF | kubectl apply -f -
> apiVersion: v1
> kind: Pod
> metadata:
> name: cat-nginx
> spec:
> containers:
> - image: nginx
> name: cat-nginx
> EOF
pod/cat-nginx created
student@Master:~$
'DevOps > DockerKubernetes' 카테고리의 다른 글
| (Windows) Vagrant로 Linux(ubuntu) VM 단번에 생성하기 (0) | 2022.09.03 |
|---|---|
| kubernetes를 사용하면 무엇을 할 수 있을까? (0) | 2022.09.03 |
| YAML 파일을 이용하여 컨테이너의 생성 (0) | 2022.08.20 |
| 쿠버네티스 기본 명령어 (0) | 2022.08.16 |
| Kubernetes 설치 (0) | 2022.08.16 |