본문 바로가기

kubernetes, helm, rancher

kubernetes namespace, resourcequota

기본적인 kubernetes resource, option 등을 설명한 블로그입니다. 추가적인 기능을 보고싶으시면 docs를 참고바랍니다.

https://kubernetes.io/docs/home/

 

Kubernetes Documentation

Kubernetes is an open source container orchestration engine for automating deployment, scaling, and management of containerized applications. The open source project is hosted by the Cloud Native Computing Foundation.

kubernetes.io

  • namespace는 하나의 cluster라고 생각하면 됨. 따라서 여러 cluster를 논리적으로 나누는 것을 namepace로 이용.
  • kubectl get pods를 하면 default의 pods만 보이고, -n을 이용해 namespace를 정해주면 그 안의 pods만 보여줌.
  • kubectl create namespace [name] -> namespace 생성
  • kubectl create -f [file_name] -n [ns name] 하거나, metadata에 namespace를 넣으면, 해당 namespace에 생성.
  • kubectl get ns -> namespace list 보기
  • kubectl create namesapce [name] --dry-run -o yaml > [name].yaml
apiVersion: v1
kind: Namespace
metadata:
  name: [ns name]
  • kubectl get pods --all-namespaces -> 모든 namespace의 pod 보기.
  • resourcequota -> ns내의 resource를 제한시킬 수 있다.
apiVersion: v1
kind: ResourceQuota
metadata:
  name: [name]
  namespace: [ns name]
spec:
  hard:
    pods: "10"
    requests.cpu: "4"
    requests.memory: 5Gi
    limits.cpu: "10"
    limits.memory: 10Gi

 

$ kubectl run webserver --image=nginx:1.14
$ kubectl create -f pods.yaml
# pod yaml
apiVersion: v1
kind: Pod
metadata:
  name: webserver # pod 이름
spec:
  containers:
    - name: nginx-container [container 이름]
      image: nginx:1.14
      imagePullPolicy: Always # kubelet cache에 image의 digest가 있는지 확인 후 
                              # 있으면 쓰고, 없으면 내려받는다.
      ports:
      - containerPort: 80
        protocol: TCP
    - name : ~ # 만약 multi container 일 경우
      ...