目录
- 一.系统环境
- 二.前言
- 三.pod的调度
- 3.1 pod的调度概述
- 3.2 pod自动调度
- 3.2.1 创建3个主机端口为80的pod
- 3.3 使用nodeName 字段指定pod运行在哪个节点
- 3.4 使用节点标签nodeSelector指定pod运行在哪个节点
- 3.4.1 查看标签
- 3.4.2 创建标签
- 3.4.3 通过标签控制pod在哪个节点运行
- 3.5 使用亲和性与反亲和性调度pod
- 3.5.1 使用硬策略requiredDuringSchedulingIgnoredDuringExecution
- 3.5.2 使用软策略preferredDuringSchedulingIgnoredDuringExecution
- 3.5.3 节点亲和性权重
- 3.6 Pod 拓扑分布约束
服务器操作系统版本CPU架构进程功能描述k8scloude1/192.168.110.130CentOS Linux release 7.4.1708 (Core)x86_64docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calicok8s master节点k8scloude2/192.168.110.129CentOS Linux release 7.4.1708 (Core)x86_64docker,kubelet,kube-proxy,calicok8s worker节点k8scloude3/192.168.110.128CentOS Linux release 7.4.1708 (Core)x86_64docker,kubelet,kube-proxy,calicok8s worker节点二.前言本文介绍pod的调度,即如何让pod运行在Kubernetes集群的指定节点 。
进行pod的调度的前提是已经有一套可以正常运行的Kubernetes集群,关于Kubernetes(k8s)集群的安装部署,可以查看博客《Centos7 安装部署Kubernetes(k8s)集群》https://www.cnblogs.com/renshengdezheli/p/16686769.html
三.pod的调度3.1 pod的调度概述你可以约束一个 Pod 以便 限制 其只能在特定的节点上运行, 或优先在特定的节点上运行 。有几种方法可以实现这点,推荐的方法都是用 标签选择算符来进行选择 。通常这样的约束不是必须的,因为调度器将自动进行合理的放置(比如,将 Pod 分散到节点上, 而不是将 Pod 放置在可用资源不足的节点上等等) 。但在某些情况下,你可能需要进一步控制 Pod 被部署到哪个节点 。例如,确保 Pod 最终落在连接了 SSD 的机器上, 或者将来自两个不同的服务且有大量通信的 Pods 被放置在同一个可用区 。
你可以使用下列方法中的任何一种来选择 Kubernetes 对特定 Pod 的调度:
- 与节点标签匹配的 nodeSelector
- 亲和性与反亲和性
- nodeName 字段
- Pod 拓扑分布约束
- 待调度的pod列表
- 可用的node列表
- 调度算法:主机过滤,主机打分
#主机端口映射:hostPort: 80[root@k8scloude1 pod]# kubectl explain pods.spec.containers.ports.hostPortKIND:PodVERSION:v1FIELD:hostPort <integer>DESCRIPTION:Number of port to expose on the host. If specified, this must be a validport number, 0 < x < 65536. If HostNetwork is specified, this must matchContainerPort. Most containers do not need this.
创建第一个pod,hostPort: 80表示把容器的80端口映射到节点的80端口[root@k8scloude1 pod]# vim schedulepod.yaml#kind: Pod表示资源类型为Podlabels指定pod标签metadata下面的name指定pod名字containers下面全是容器的定义#image指定镜像名字imagePullPolicy指定镜像下载策略containers下面的name指定容器名#resources指定容器资源(CPU,内存等)env指定容器里的环境变量dnsPolicy指定DNS策略#restartPolicy容器重启策略ports指定容器端口containerPort容器端口hostPort节点上的端口[root@k8scloude1 pod]# cat schedulepod.yamlapiVersion: v1kind: Podmetadata:creationTimestamp: nulllabels:run: podname: podnamespace: podspec:containers:- image: nginximagePullPolicy: IfNotPresentname: podresources: {}ports:- name: httpcontainerPort: 80protocol: TCPhostPort: 80dnsPolicy: ClusterFirstrestartPolicy: Alwaysstatus: {}[root@k8scloude1 pod]# kubectl apply -f schedulepod.yamlpod/pod created[root@k8scloude1 pod]# kubectl get podsNAMEREADYSTATUSRESTARTSAGEpod1/1Running06s
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 多情总被无情伤 这些星座是爱情里的傻瓜
- JAVA的File对象
- 秋天冰箱的温度怎么调才正确 冰箱不制冷的原因是什么
- 性格坚强的三大星座女 却最让人心疼
- 外出发展 最易发财的星座
- 画饼专家 这些星座男的话不能全信
- 2023年9月13日是剪指甲吉日吗 2023年9月13日是剪指甲的黄道吉日吗
- 工资过10万的十大职业 哪些工作工资超高
- 2023年9月13日是年前洗澡的黄道吉日吗 2023年农历七月廿九年前洗澡吉日
- 十二星座秉承单身主义的原因 遇不到对的人还是享受孤独