Kaynaklar ve Limitler

kubectl config set-context --current --namespace=myspace

kubectl get all

No resources found in myspace namespace.


https://github.com/edib/kubernetes/blob/master/yamls/7-pod-quota-mem-exceed.yaml

https://github.com/edib/kubernetes/blob/master/yamls/7-pod-quota-mem.yaml

https://github.com/edib/kubernetes/blob/master/yamls/7-quota-count.yaml

https://github.com/edib/kubernetes/blob/master/yamls/7-quota-limitrange.yaml


https://github.com/edib/kubernetes/blob/master/yamls/7-quota-mem.yaml


Uygulamamızı kuruyoruz.

kubectl apply -f https://raw.githubusercontent.com/redhat-scholars/kubernetes-tutorial/master/apps/kubefiles/myboot-deployment.yml

Podun detaylarına bakalım.

PODNAME=$(kubectl get pod -l app=myboot -o name)
kubectl describe $PODNAME

Name:         myboot-7cbfbd9b89-7q97b
Namespace:    funstuff
Priority:     0
Node:         node1/10.0.0.246
Start Time:   Mon, 04 Oct 2021 09:28:36 +0000
Labels:       app=myboot
              pod-template-hash=7cbfbd9b89
Annotations:  cni.projectcalico.org/podIP: 10.1.166.154/32
              cni.projectcalico.org/podIPs: 10.1.166.154/32
Status:       Running
IP:           10.1.166.154
IPs:
  IP:           10.1.166.154
Controlled By:  ReplicaSet/myboot-7cbfbd9b89
Containers:
  myboot:
    Container ID:   containerd://c8fdbebe0b0a4169f5c7cd630beb5028604e473e38ea1473ca117c697a3e13e8
    Image:          quay.io/rhdevelopers/myboot:v1
    Image ID:       quay.io/rhdevelopers/myboot@sha256:ea9a142b694725fc7624cda0d7cf5484d7b28239dd3f1c768be16fc3eb7f1bd0
    Port:           8080/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Mon, 04 Oct 2021 09:29:36 +0000
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-rhdmf (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-rhdmf:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  4m34s  default-scheduler  Successfully assigned funstuff/myboot-7cbfbd9b89-7q97b to node1
  Normal  Pulling    4m33s  kubelet            Pulling image "quay.io/rhdevelopers/myboot:v1"
  Normal  Pulled     3m35s  kubelet            Successfully pulled image "quay.io/rhdevelopers/myboot:v1" in 58.347827289s
  Normal  Created    3m34s  kubelet            Created container myboot
  Normal  Started    3m34s  kubelet            Started container myboot

Ayağa kalktı. Siliyoruz.

kubectl delete deployment myboot

Kaynak tanımları olanı kuruyoruz.

kubectl apply -f https://raw.githubusercontent.com/redhat-scholars/kubernetes-tutorial/master/apps/kubefiles/myboot-deployment-resources.yml

Podun durumuna bakalım.

kubectl get pods

NAME                      READY   STATUS    RESTARTS   AGE
myboot-7b7d754c86-kjwlr   0/1     Pending   0          19s

Daha fazla bilgi almak istiyorsak

kubectl get events --sort-by=.metadata.creationTimestamp

<unknown>   Warning   FailedScheduling    pod/myboot-7b7d754c86-kjwlr    0/6 nodes are available: 6 Insufficient cpu.
<unknown>   Warning   FailedScheduling    pod/myboot-7b7d754c86-kjwlr    0/6 nodes are available: 6 Insufficient cpu.

Kaynaklarda belirtilen kadar İşlemci ve bellek yoksa uygulama ayağa kalkmaz.

pod açıklamalarından da aynı bilgilere erişebilirsiniz.

PODNAME=$(kubectl get pod -l app=myboot -o name)
kubectl describe $PODNAME

Uygulamamızı siliyoruz.

kubectl delete -f https://raw.githubusercontent.com/redhat-scholars/kubernetes-tutorial/master/apps/kubefiles/myboot-deployment-resources.yml

Limitleri olan başka bir uygulama kuruyoruz.

kubectl apply -f https://raw.githubusercontent.com/redhat-scholars/kubernetes-tutorial/master/apps/kubefiles/myboot-deployment-resources-limits.yml

İnceleyelim ve ayakta olduğunu görelim.

PODNAME=$(kubectl get pod -l app=myboot -o name)
kubectl describe $PODNAME

Servisini kuralım.

kubectl apply -f https://raw.githubusercontent.com/redhat-scholars/kubernetes-tutorial/master/apps/kubefiles/myboot-service.yml

curl ile test edelim.

# ip ve portu öğreniyoruz.
kubectl get svc myboot
NAME     TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
myboot   LoadBalancer   10.152.183.11   <pending>     8080:32299/TCP   6h38m

while true
do curl $IP:$PORT
sleep .3
done

Referanslar https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/ https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/