kubernetes (k8s) CKA认证之第二课:亲和性与 Pod 的调度
手动调度一个 pod
// cat manual-schedule.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
run: pod-manual-schedule
name: pod-manual-schedule
namespace: default
spec:
nodeName: "app.centos7.com"
containers:
- name: my-pod
image: nginx:alpine
执行以下命令即可验证。
kubectl create -f manual-schedule.yaml
kubectl get po -owide
kubectl describe po pod-manual-schedule|less
kubectl delete -f manual-schedule.yaml
NodeAffinity 结点的亲和性
kubectl label node app.centos7.com has-eip=yes
kubectl get node --show-labels
vi node-affinity.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
run: node-affinity
name: node-affinity
namespace: default
spec:
containers:
- name: node-affinity
image: nginx:alpine
imagePullPolicy: IfNotPresent
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: has-eip
operator: In
values:
- "yes"
运行以下命令加以验证:
kubectl create -f node-affinity.yaml
kubectl get po -owide
结果:
[root@svn ch02]# kubectl get po -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
node-affinity 1/1 Running 0 5m49s 10.244.2.117 app.centos7.com <none> <none>
[root@svn ch02]#
PodAffinity (保留上一步的 node-affinity 处于 Running 状态 ) “豆荚”的亲和性
vi pod-affinity.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-affinity
labels:
run: pod-affinity
spec:
containers:
- name: pod-affinity
image: nginx:alpine
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: run
operator: In
values:
- "node-affinity"
topologyKey: kubernetes.io/hostname
运行结果:
[root@svn ch02]# kubectl get po --show-labels -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES LABELS
node-affinity 1/1 Running 0 129m 10.244.2.117 app.centos7.com <none> <none> run=node-affinity
[root@svn ch02]# kubectl create -f pod-affinity.yaml
pod/pod-affinity created
[root@svn ch02]# kubectl get po --show-labels -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES LABELS
node-affinity 1/1 Running 0 129m 10.244.2.117 app.centos7.com <none> <none> run=node-affinity
pod-affinity 1/1 Running 0 4s 10.244.2.118 app.centos7.com <none> <none> run=pod-affinity
[root@svn ch02]#
pod-anti-affinity 反亲和性
前提:保留上一步的 node-affinity 和 pod-affinity 处于 Running 状态
vi pod-anti-affinity.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-anti-affinity
labels:
run: pod-anti-affinity
spec:
containers:
- name: pod-affinity
image: nginx:alpine
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: run
operator: In
values:
- "pod-affinity"
topologyKey: kubernetes.io/hostname
由于反亲和性,新生成的 pod-anti-affinity 将会被调度到 app.centos7.com 之外的结点。
运行结果:
[root@svn ch02]# kc create -f pod-anti-affinity.yaml
pod/pod-anti-affinity created
[root@svn ch02]# kc get pod -owide --show-labels
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES LABELS
node-affinity 1/1 Running 0 153m 10.244.2.117 app.centos7.com <none> <none> run=node-affinity
pod-affinity 1/1 Running 0 24m 10.244.2.118 app.centos7.com <none> <none> run=pod-affinity
pod-anti-affinity 1/1 Running 0 3m18s 10.244.1.9 jks.centos7.com <none> <none> run=pod-anti-affinity
[root@svn ch02]#
Taints 与 Tolerations 污点与容忍
// 为 master 节点配置 taints 禁止普通 pod 调度到 master 上
kubectl taint nodes svn.centos7.com node-role.kubernetes.io/master=:NoSchedule
vi pod-tolerations.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
run: pod-tolerations
name: pod-tolerations
spec:
containers:
- name: my-pod
image: nginx:alpine
tolerations:
- key: gpu
operator: Equal
value: "yes"
effect: NoSchedule
给 node jks.centos7.com 增添对应的污点,如此,pod-tolerations 才可被调度在其之上。
kubectl taint node jks.centos7.com gpu=no:NoSchedule
kubectl taint node jks.centos7.com gpu=yes:NoSchedule --overwrite
运行结果:
[root@svn ch02]# kubectl create -f pod-tolerations.yaml
pod/pod-tolerations created
[root@svn ch02]# kubectl get po -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod-tolerations 1/1 Running 0 9s 10.244.1.18 jks.centos7.com <none> <none>
[root@svn ch02]#
References
kubernetes (k8s) CKA认证之第二课:亲和性与 Pod 的调度的更多相关文章
- Kubernetes/K8s CKA认证全套实训视频教程下载
地址: 链接:https://pan.baidu.com/s/1bwEUZTCVzqM3mGjrlISbcg 提取码:r1kx 目录: 目录: │ 1-1.kubernetes理论教程 - 云原生技术 ...
- Kubernetes K8S之通过helm部署metrics-server与HPA详解
Kubernetes K8S之通过helm部署metrics-server与 Horizontal Pod Autoscaling (HPA)详解 主机配置规划 服务器名称(hostname) 系统版 ...
- Kubernetes K8S之affinity亲和性与反亲和性详解与示例
Kubernetes K8S之Node节点亲和性与反亲和性以及Pod亲和性与反亲和性详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-mas ...
- 《两地书》--Kubernetes(K8s)基础知识(docker容器技术)
大家都知道历史上有段佳话叫“司马相如和卓文君”.“皑如山上雪,皎若云间月”.卓文君这么美,却也抵不过多情女儿薄情郎. 司马相如因一首<子虚赋>得汉武帝赏识,飞黄腾达之后便要与卓文君“故来相 ...
- 我如何通过K8S开发认证(CKAD)考试
题记:笔者最近经过3个多月的空余时间准备,终于通过了K8S开发认证(CKAD)的考试,在这里简单给大家分享一下经验. 一,先科普下CKAD 众所周知,Kubernetes在容器编排器大战中脱颖而出后, ...
- Docker Kubernetes(K8s)简介
入职了新公司,使用了Docker和K8s,需要有一个基础的了解,对网络上相关信息进行了简单总结. 一Docker 1简介: Docker 将应用程序与该程序的依赖,打包在一个文件里面.运行这个文件,就 ...
- Kubernetes(k8s) docker集群搭建
原文地址:https://blog.csdn.net/real_myth/article/details/78719244 一.Kubernetes系列之介绍篇 •Kubernetes介绍 1.背 ...
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
0.前言 整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录 一.flanneld介绍 ...
- k8s的认证和service account简述
k8s的认证: 与API server通信的客户端大致有两类: 1.集群客户端工具(kubectl.kubeadm.kubelet等) 2.集群内pod. 任何客户端访问k8s时的过程: 1.认 ...
随机推荐
- jQuery选择器整理+知识总结
jQuery选择器 没有不会遗忘的知识,还是做个总结吧! 一.基本分类 jQuery选择器大致可以分为两类,基本选择器和过滤选择器,总体结构体系如下: 二.基本选择器 基本选择器又可以分为三种,分 ...
- wustctf2020_number_game
第一次碰到这种类型的题目,特地来记录一下 例行检查就不放了 int的取值范围[-2147482648,2147483647] 网上的解释: 绕过第9行的if即可获取shell,v1是无符号整型,我们输 ...
- LuoguP1723 高手过愚人节 题解
Content 有 \(n\) 次询问,每次询问给定一个字符串 \(s\),求这个字符串最长的回文子串的长度. 数据范围:\(n\) 无解(至少从题面来看是这样的),字符串长度目测应该在 \(10^7 ...
- CF977B Two-gram 题解
Content 给定一个字符串 \(s\),请求出出现次数最多的长度为 \(2\) 的子串. 数据范围:\(2\leqslant |s|\leqslant 100\). Solution 直接求出所有 ...
- ligerui有时候竖直的线没对齐,是因为某一列的内容太长,此刻可以调整一下此列的宽度为适当的值便可消除此现象
ligerui有时候竖直的线没对齐,是因为某一列的内容太长,此刻可以调整一下此列的宽度为适当的值便可消除此现象
- [react]react创建app,路由,mobx 全教程
1.创建app, npx create-react-app my-app Cmd Copy 2.进入项目目录 cd my-app Cmd Copy 3.启用配置文件(默认是不开启配置文件的) ya ...
- html5调用摄像头截图
关于html5调用音视频等多媒体硬件的API已经很成熟,不过一直找不到机会把这些硬件转化为实际的应用场景,不过近年来随着iot和AI的浪潮,我觉得软硬结合的时机已经成熟.那我们就提前熟悉下怎么操作这些 ...
- windows10 c++获取本机IPv4,ipv6,查询本机Ipv4,ipv6
1.关于 演示环境: win10+VS2017 2.支持 需要下面的库支持: ws2_32.lib 需要下面的宏,添加到项目属性-> c/c++ -> 预处理器定义 _WINSOCK_DE ...
- 【LeetCode】286. Walls and Gates 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 BFS 日期 题目地址:https://leetcod ...
- 【LeetCode】1047. Remove All Adjacent Duplicates In String 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 栈 日期 题目地址:https://leetcode ...