kubectl get pods
kubectl get pods -o wide
상세정보
kubectl describe pod pod명
kubectl run Pod명 --image=이미지명
yaml 파일 실행
pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
tier: frontend
spec:
containers:
- name: nginx
image: nginx
kubectl apply -f pod.yaml
kubectl create -f pod.yaml
yaml 파일 수정
kubectl apply -f pod.yaml
kubectl edit pod pod명
kubectl delete pod pod명
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox:1.28
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
initContainers:
- name: init-myservice
image: busybox:1.28
command: ['sh', '-c', "until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for myservice; sleep 2; done"]
- name: init-mydb
image: busybox:1.28
command: ['sh', '-c', "until nslookup mydb.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for mydb; sleep 2; done"]
replica_rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: myapp-rc
labels:
app: myapp
tier: frontend
spec:
template: // POD 정보 기입
metadata:
name: nginx
labels:
app: myapp
tier: frontend
spec:
containers:
- name: nginx-container
image: nginx
replicas: 3
실행
kubectl create -f replica_rc.yaml
체크
kubectl get replicationcontroller
replica_rs.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: myapp-rs
labels:
app: myapp
tier: frontend
spec:
template: // POD 정보 기입
metadata:
name: nginx
labels:
app: myapp
tier: frontend
spec:
containers:
- name: nginx-container
image: nginx
replicas: 3
selector:
matchLabels:
type: frontend // template lable과 일치
실행
kubectl create -f replica_rs.yaml
체크
kubectl get replicaset
수정
kubectl edit replicaset rs명
스케일링
kubectl replace -f replica_rs.yaml
kubectl scale --replicas=6 -f replica_rs.yaml
kubectl scale rs rs명 --replicas=5
중요) RS POD image 교체 시, 실행중인 POD 삭제 후 자동 재생성
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-rs
labels:
app: myapp
tier: frontend
spec:
template: // POD 정보 기입
metadata:
name: nginx
labels:
app: myapp
tier: frontend
spec:
containers:
- name: nginx-container
image: nginx
replicas: 3
selector:
matchLabels:
type: frontend // template lable과 일치
실행
kubectl create -f deployment.yaml
체크
kubectl get deployments
번외
kubectl create deployment deployment명 --image=이미지명
kubectl scale deployment --replicas=3 deployment명
service-np.yaml
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
type: NodePort
ports:
- targetPort: 80
port: 80
nodePort: 30008
selector: // 수많은 POD 중 어떤 POD인지 명시
app: myapp
type: front-end
실행
kubectl create -f service-np.yaml
체크
kubectl get services // 해당 service의 클러스터 IP를 통해 외부에서 접근 가능
service-ci.yaml
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
type: ClusterIP
ports:
- targetPort: 80
port: 80
selector: // 수많은 POD 중 어떤 POD인지 명시
app: myapp
type: front-end
service-lb.yaml
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
type: LoadBalancer
ports:
- targetPort: 80
port: 80
nodePort: 30008
namespace별 POD 조회
kubectl get pods --namespace=네임스페이스명
// 특정 네임스페이스를 디폴트로 지정하여 get pods로 바로 조회
kubectl config set-context $(kubectl config current-context) --namespace=네임스페이스명
// 특정 네임스페이스의 서비스 조회
kubectl -n 네임스페이스명 get svc
// 특정 네임스페이스 서버 접근 시 host name
서비스명.네임스페이스명.svc.cluster.local
ex) db-service.dev.svc.cluster.local
// 모든 pod 조회
kubectl ge pods -all-namespaces
kubectl get pods --all-namespaces | grep POD명
namespace지정 후 POD 생성
kubectl create -f pod.yaml --namespace=네임스페이스명
kubectl run POD명 --image=이미지명 -n 네임스페이스명
namespace 생성
apiVersion: v1
kind: Namespace
metadata:
name: dev
kubectl create -f namespace.yaml
kubectl create namespace 네임스페이스명
Resource Quota
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-quota
namespace: dev
spec:
hard:
pods: "10"
requests.cpu: "4"
requests.memory: 5Gi
limits.cpu: "10"
limits.memory: 10Gi
kubectl create -f quota.yaml
kubectl run --image=nginx nginx
kubectl create deployment --image=nignx nginx
kubectl expose deployment nginx --port 80
kubectl edit deployment nginx
kubectl scale deployment nginx --replicas =5
kubectl set image deployment nginx nginx=nginx:1.18
kubectl create -f nginx.yaml
kubectl replace -f niinx.yaml
kubectl delete -f nginx.yaml
단점
kubectl apply -f nginx.yaml
kubectl apply -f /path/to/config-files // 디렉토리 파일들 적용
라벨 기입 후 POD 생성
1) kubectl run POD명 --image=image명 --dry-run=client -oyaml > 파일명.yaml // 이후 yaml 파일에서 label 수정
2) kubectl run POD명 -l tier=라벨명 --image=image명
POD으로 서비스 생성
kubectl expose pod pod명 --port=PORT --name 서비스명
POD생성과 동시에 서비스 생성
kubectl run POD명 --image=image명 --port=PORT --expose
POD으로 포트 지정 후 생성
kubectl run POD명 --image=image명 --port=PORT
이미지/레플리카/네임스페이스 deployment생성
kubectl create deployment deployment명 --image=image명 --replicas=3 --n namespace명
namespace 생성
kubectl create ns namespace명