[kubernetes]

이장훈·2022년 1월 13일
0

1. 약어정보 확인

약어 / api version / namespace 등에 대한 정보를 확인할 수 있다.

kubectl api-resources

2. 기본적인 명령어 모음

Basic Commands (Beginner):
create Create a resource from a file or from stdin
expose Take a replication controller, service, deployment or pod and expose it as a new Kubernetes service
run Run a particular image on the cluster
set Set specific features on objects

Basic Commands (Intermediate):
explain Get documentation for a resource
get Display one or many resources
edit Edit a resource on the server
delete Delete resources by file names, stdin, resources and names, or by resources and label selector

Deploy Commands:
rollout Manage the rollout of a resource
scale Set a new size for a deployment, replica set, or replication controller
autoscale Auto-scale a deployment, replica set, stateful set, or replication controller

Cluster Management Commands:
certificate Modify certificate resources.
cluster-info Display cluster information
top Display resource (CPU/memory) usage
cordon Mark node as unschedulable
uncordon Mark node as schedulable
drain Drain node in preparation for maintenance
taint Update the taints on one or more nodes

Troubleshooting and Debugging Commands:
describe Show details of a specific resource or group of resources
logs Print the logs for a container in a pod
attach Attach to a running container
exec Execute a command in a container
port-forward Forward one or more local ports to a pod
proxy Run a proxy to the Kubernetes API server
cp Copy files and directories to and from containers
auth Inspect authorization
debug Create debugging sessions for troubleshooting workloads and nodes

Advanced Commands:
diff Diff the live version against a would-be applied version
apply Apply a configuration to a resource by file name or stdin
patch Update fields of a resource
replace Replace a resource by file name or stdin
wait Experimental: Wait for a specific condition on one or many resources
kustomize Build a kustomization target from a directory or URL.

Settings Commands:
label Update the labels on a resource
annotate Update the annotations on a resource
completion Output shell completion code for the specified shell (bash or zsh)

Other Commands:
api-resources Print the supported API resources on the server
api-versions Print the supported API versions on the server, in the form of "group/version"
config Modify kubeconfig files
plugin Provides utilities for interacting with plugins
version Print the client and server version information

3. 기본정보 확인

kubectl get nodes
kubectl get pods
kubectl get pods -o wide

kubectl describe pod webserver
kubectl describe node m-k8s

4.

kubectl run webserver --image=nginx:1.14 --port 80

system5 계열 - / BSD 계열 -- (풀어서 사용)

5. deploy

kubectl create deployment mainui --image=httpd --replicas=3

kubectl edit
kubectl get deploy / deployments.apps

6. logs

7. edit

kubectl edit deployments.apps mainui

8. yaml 파일 생성하기

kubectl run webserver --image=nginx:1.14 --port 80 --dry-run -o yaml(json)

9. create

kubectl create -f webserver-pod.yaml

10. kubernetes 동작 flow

  • node : master node와 worker node로 구성되며, master node는 control plain이라고도 한다.

마스터 컴포넌트

  • etcd
    - key-value 타입의 저장소
  • kube-apiserver
    - k8s API를 사용하도록 요청을 받고 요청이 유효한지 검사
  • kube-scheduler
    - 파드를 실행할 노드 선택, 배치에 대해서 선택함
  • kube-controller-manager
    - 파드를 관찰하며 개수를 보장

워커노드 컴포넌트

  • kubelet
    - 모든 노드에서 실행되는 k8s 에이전트
    • 데몬 형태로 동작
  • kube-proxy
    - k8s의 networks 동작을 관리
    • iptables rule을 구성
  • container runtime
    - 컨테이너를 실행하는 엔진
    • docker, containerd, runc 등

API : kubectl 명령에 대한 요청을 받아들이고, 권한, 문법 등을 검토하고 여러 개 컴포넌트와 소통을 시도한다.
etcd : 워커노드에 대한 상태정보(컨테이너 동작 상태, 이미지상태, 하드웨어 상태 등), kubelet 데몬을 통해서 cadvisor(컨테이너 모니터링 툴)을 가지고 상태정보를 수집한다.

애드온

  • 네트워크 애드온 : CNI(weave, calico, flaneld, kube-route)
  • DNS 애드온 : coreDNS
  • DashBoard 애드온
  • 컨테이너 지원 모니터링 : cAdvisor
  • 클러스터 로깅
    - 컨테이너 로그, k8s 운영 로그들을 수집해서 중앙화
    • ELK(ElasticSearch, Logstash, Kibana), EFK(ElasticSearch, Fluentd, Kibana), DataDog
profile
개발자가 꿈입니다.

0개의 댓글