创建一个一个pod流程

kubernetes基于list-watch机制的控制器架构,实现组件间交互的解耦。
kubectl  run ----->apiserver  ----->etcd ----->scheduler
1.kubectl发起一个创建pod请求
2.apiserver收到创建pod请求,将请求的配置写道etcd
3.sheduler通过list/watch获取到pod配置,根据pod配置选择一个合适的节点,然后将选择结果返回给apiserver
4.kubelet获取绑定到我节点的pod
5.kubelet 调用容器引擎api创建容器,并将结果反馈给apiserver

controller-manager和kube-proxyme没有应用上
controller-manager负责调度/发布更新/回滚
kube-proxyme是负责service服务具体实现的组件
Pod中详细调度的主要属性
资源限制

kubectl run nginx  --image=nginx --dry-run  -o  yaml  > nginx.yaml
vim nginx.yaml
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
    resources: 
      requests:    #最小限制内存和cpu
        memory: "128Mi"  #最小内存
        cpu:    "250m"   #最小cpu
      limits:
        memory: "150Mi" #最大内存 
        cpu:    "300m"  #最大cpu,300m相当于一核cpu的百分之30

在这里插入图片描述
nodeSelector:用于将pod调度到匹配Label的Node上,如果没有匹配的标签会调度失败。
作用:
完全匹配节点标签
固定Pod到特定节点

给节点打标签
kubectl label nodes [node] key=value
kubectl label nodes k8s-node1 disktype=ssd

nodeSelector给相应节点打标签,让Pod部署到指定的节点上

1.打标签

kubectl label node cka-node  disktype=gpu

2.查看标签
kubectl get node --show-labels | grep disktype
在这里插入图片描述
说明标签打印成功
3 编写pod.yaml

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: nginx
  name: zf-nginx
spec:
  nodeSelector:              #将pod部署到指定标签为gpu的服务器上
    disktype: "gpu"              
  containers:
  - image: nginx
    name: nginx
    resources: {}
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐