静态pod
静态pod由user直接创建调用,不能迁移
由kebelet守护进程直接管理的pod,无需APIserver监管
kubelet监视每个静态pod
静态pod永远绑定到一个指定节点上的kubelet
静态pod spec不能引用其他API对象
静态pod配置路径/var/lib/kubelet/config.yaml里面定义
staticPodPath: /etc/kubernetes/manifests
将资源文件写在staticPodPath: /etc/kubernetes/manifests下面 不用创建,直接可以在master节点上看到,并且master删不掉,只有删除文件就没了
pod调度策略
将pod分配到合适的计算节点上,然后对应节点上的kubelet运行这些pod
kube-scheduler是默认调度器,是集群中核心组件,它依据调度策略分配到合适节点上运行
调度流程
筛选 :首先选出满足pod的所有node,包括计算资源、内存、存储、网络、端口
如果没有能满足pod的node,pod将一直停在pending状态,直到找到合适的node运行它
打分:(优选)调度器根据打分规则 为每一个可调度的节点进行打分。选出最高分来运行pod,如果多个一样就随机选择
确定node运行pod后调度器决定通知给kube-apiserver,这个过程叫绑定
pod定向调度(nodeName)
让pod运行在指定的node上
即使失败也不会调度到其他结点,一直等下去
标签与pod调度(labels) nodeSelector
标签是符加到k8s对象上的键值对
因为使用结点名称不灵活,所以出现打标签能够松散耦合,可以创建,修改删除,当然也可以在资源文件中直接定义
kubectl label 资源类型 【资源名称】 【选项/参数】
xxx代表pod名 key后面加一个 - 就是删除
kubectl get pods xxx --show-lables
kubectl lable pods xxx key=value
kubectl delete pods xxx key-
kubectl get pod -l key=value 指定标签查看同一个标签有哪些pod
打上标签后就可以通过pod标签调度
资源配额(resources)
为了让资源合理分配,需要设定一些规则,所以用到配额
cpu资源类型
在k8s中cpu是以毫核(m)为单位,最小调度单元是1m cpu的一个核心看作1000m
若你有2颗cpu,且没cpu核心为4 ,那么你的资源总量就是8000m
内存资源类型
E P T G M K 1k==1000
Ei Pi Ti Gi Mi Ki 1ki==1024
配额 :保证程序的运行 可以超出不能低于 requests
限额 :保证不会占用他人资源 limits
[root@master ~]# vim minpod.yaml
---
kind: Pod
apiVersion: v1
metadata:
name: minpod
spec:
terminationGracePeriodSeconds: 0
restartPolicy: Always
nodeSelector:
kubernetes.io/hostname: node-0003
containers:
- name: linux
image: myos:v2009
command: ["awk", "BEGIN{while(1){}}"]
resources: # 设置配额
requests: # 最小配额
memory: "1200Mi" # 内存配额
[root@master ~]# vim minpod.yaml
---
kind: Pod
apiVersion: v1
metadata:
name: minpod
spec:
terminationGracePeriodSeconds: 0
restartPolicy: Always
nodeSelector:
kubernetes.io/hostname: node-0003
containers:
- name: linux
image: myos:v2009
command: ["awk", "BEGIN{while(1){}}"]
resources:
requests:
cpu: "800m" # 计算资源需求
memory: "1200Mi"