Who Pod Who

Pod

在EKS的宇宙里,AWS会负责去管理Master Node并且维护,而我们可以access Worker Node,Worker Node对比AWS的服务则为EC2,若有Key就可以直接access到拥有public ip的EC2,或是在建置Cluster的时候,若有启用public Endpoint,就可以透过网路使用kubectl执行API access pod。

Pod则是EKS里运作服务的最小单位,而应用程序可以在Container里执行并在Pod底下运行一个甚至多个来完成服务,且Container之间可以互相使用资源。

使用EKS建立cluster的时候,需要注意instanceType,会决定Node里面的Pod最高上限值

若Pod达到上限值,可以将不必要的Pod删除,或增加Node数量,来提高Pod的可用空间

Pod上限计算公式
https://chart.googleapis.com/chart?cht=tx&chl=(Max%20ENI)%5C%2C%20%5Ctimes%20%5C%2C(Private%20IPv4_p_e_r_E_N_I%5C%2C%20-%5C%2C%201)%20%5C%2C%2B%20%5C%2C2
t3.micro: MaxENI = 2, PrivateIPv4 per ENI = 2
https://chart.googleapis.com/chart?cht=tx&chl=%5CRightarrow 2 * (2 – 1) + 2 = 4 pods
t3.small: MaxENI = 3, PrivateIPv4 per ENI = 4
https://chart.googleapis.com/chart?cht=tx&chl=%5CRightarrow 3 * (4 – 1) + 2 = 11 pods

ENI资讯参考:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI

以下会撰写一个Pod描述档,并做说明解释

apiVersion: v1
kind: Pod
metadata:
  name: myappforfew
  labels:
    name: myappforfew
spec:
  containers:
  - name: myappforfew
    image: johnson860312/awswebdb
    resources:
      limits:
        memory: "512Mi"
        cpu: "512m"
      requests:
        memory: "128Mi"
        cpu: "256m"
    ports:
      - containerPort: 80
  nodeSelector:
    name:  fewpods
---
apiVersion: v1
kind: Pod
metadata:
  name: myappformore
  labels:
    name: myappformore
spec:
  containers:
  - name: myappformore
    image: johnson860312/awswebdb
    resources:
      limits:
        memory: "512Mi"
        cpu: "512m"
      requests:
        memory: "128Mi"
        cpu: "256m"
    ports:
      - containerPort: 80
  nodeSelector:
    name:  morepods

metadata:

  • name: 给予这个物件的名字。在使用kubectl可以明确指出Pod
  • labels: 给予物件一个标签。可以归类同类型的Pod,并使用selector指定

spec: 定义Pod的规格。需要怎样的Container
resources: 分配CPU/Memory资源
limits: 可以分别定义CPU/Memory的上限值
requests: 直接分配固定的CPU/Memory资源
ports: 透过browser可以访问的port
nodeSelector: 将现在的Pod指定到想要的Node上。

Node规格:
fewpods => t3.micro (4 Pods)
morepods => t3.small (11 Pods)

透过YAML建立Pod

kubectl apply -f pod2.yaml

https://ithelp.ithome.com.tw/upload/images/20211006/20140172TwwjhRKEjp.png
查看目前的Pod
kubectl get pods -n [namespaces] => 若没有特别定义namespaces,则为default
https://ithelp.ithome.com.tw/upload/images/20211006/20140172bntNFkWuE6.png
查看Pod的资讯
kubectl describe pod myappforfew -n [namespaces]
https://ithelp.ithome.com.tw/upload/images/20211006/20140172T7nnyEbLbr.png
因为达到一个Node所拥有Pod的上限,所以状态为Pending

透过kubectl将local端的port mapping到EKS
kubectl port-forward [pod] [local port]:[container port]
https://ithelp.ithome.com.tw/upload/images/20211006/20140172jUY9soNZsG.png
https://ithelp.ithome.com.tw/upload/images/20211006/201401726gwIdfMhvr.png
善用Lens,可以快速查看EKS Cluster上的所有资讯
https://ithelp.ithome.com.tw/upload/images/20211006/20140172nLYlsM9hya.png
删除资源
kubectl delete -f [yaml file]
https://ithelp.ithome.com.tw/upload/images/20211006/20140172AqmPhbfMFq.png
之後的EKS操作都会使用t3.small,因为有足够多的Pod资源可以使用,且笔者会使用Lens的Metrics Stack,所以会占用一些Pod的空间


<<:  [ Day 21 ] 路由管理 - React Router 2/2

>>:  Day 22 - 将 Yacht Manager 後台储存资料提取後,送至前台渲染首页 Home 页面 (上) - 轮播图区 - ASP.NET Web Forms C#

09. E2E Test x Browser Test x Cypress

cypress 安装步骤 step 1. 安装 npm install cypress --save...

Day04-Vue指令

昨天提到绑定的概念,v-开头的就是Vue下使令语言,今天就要来研究它们到底有哪些还有能做什麽! v-...

DAY30:Strategy Pattern,选定不同的策略来执行

什麽是 Strategy Pattern? 设计相同介面但不同实作的物件,再由使用端以此介面去选择要...

如何让 Laravel Eloquent 支援 composite key

Composite key 一般表 (table) 是只有一个主键 (primary key),而复...

【D16】熟悉新厨具:Scanner

前言 串连行情的部分OK了,我们再回到盘後资讯,这是要使用的是Scanners。 参考网站:Stoc...