十二、Kubernetes学习笔记—Pod的调度
十二、Pod资源的调度12.1 Pod资源的调度API Server在接受客户端提交Pod对象创建请求后,然后是通过调度器(kube-schedule)从集群中选择一个可用的最佳节点来创建并运行Pod。而这一个创建Pod对象,在调度的过程当中有3个阶段:节点预选、节点优选、节点选定,从而筛选出最佳的节点。如图:
节点预选:基于一系列的预选规则对每个节点进行检查,将那些不符合条件的节点过滤,从而完成节点的预选
节点优选:对预选出的节点进行优先级排序,以便选出最合适运行Pod对象的节点
节点选定:从优先级排序结果中挑选出优先级最高的节点运行Pod,当这类节点多于1个时,则进行随机选择
当我们有需求要将某些Pod资源运行在特定的节点上时,我们可以通过组合节点标签,以及Pod标签或标签选择器来匹配特定的预选策略并完成调度,如MatchInterPodAfinity、MatchNodeSelector、PodToleratesNodeTaints等预选策略,这些策略常用于为用户提供自定义Pod亲和性或反亲和性、节点亲和性以及基于污点及容忍度的调度机制。
12.2 常用的预选策略预选策略实际 ...
十一、Kubernetes学习笔记—网络模型、插件、策略
十一、网络模型和网络插件在Kubernetes中设计了一种网络模型,要求无论容器运行在集群中的哪个节点,所有容器都能通过一个扁平的网络平面进行通信,即在同一IP网络中。需要注意的是:在K8S集群中,IP地址分配是以Pod对象为单位,而非容器,同一Pod内的所有容器共享同一网络名称空间。
11.1 Docker网络模型了解Docker的友友们都应该清楚,Docker容器的原生网络模型主要有3种:Bridge(桥接)、Host(主机)、none
Bridge:借助虚拟网桥设备为容器建立网络连接。
Host:设置容器直接共享当前节点主机的网络名称空间。
none:多个容器共享同一个网络名称空间。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#使用以下命令查看docker原生的三种网络[root@localhost ~]# docker network lsNETWORK ID ...
Ingress详细介绍
相关术语为清楚起见,本指南定义了以下术语:
Node(节点): kubernetes集群中的一台虚拟机或物理机。
Cluster(集群): 一组与因特网通过隔离的节点,他们是是Kubernetes管理的主要计算资源。
Edge router(边界路由器): 为您的集群强制执行防火墙策略的路由器。这可以是由云提供商管理的网关,也可以是物理硬件。
Cluster network(集群网络): 根据Kubernetes网络模型,促进集群内通信的一组逻辑上的或物理上的链路。
Service(服务): 一种Kubernetes服务,它使用标签选择器标识一组pod。除非另有说明,否则假定服务只有在集群网络中可路由的虚拟ip。
什么是ingressingress(在kubernetes v1.1时添加)暴露从集群外到集群内服务的HTTP或HTTPS路由。定义在ingress资源上的规则控制流量的路由。
管理对集群中的服务(通常是HTTP)的外部访问的API对象。Ingress可以提供负载平衡、SSL终端和基于名称的虚拟主机。
12345 internet |[ Ingress ]--|- ...
K8s-v1.18.3部署EFK日志收集系统
Kubeadm-v1.18.3部署EFK集群前面我们介绍了 Kubernetes集群中的几种日志收集方案,Kubernetes 中比较流行的日志收集解决方案是 Elasticsearch、Fluentd 和 Kibana(EFK)技术栈,也是官方现在比较推荐的一种方案。
Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。 Elasticsearch 通常与 Kibana 一起部署,Kibana 是 Elasticsearch 的一个功能强大的数据可视化 Dashboard,Kibana 允许你通过 web 界面来浏览 Elasticsearch 日志数据。 Fluentd是一个流行的开源数据收集器,我们将在 Kubernetes 集群节点上安装 Fluentd,通过获取容器日志文件、过滤和转换日志数据,然后将数据传递到 Elasticsearch 集群,在该集群中对其进行索引和存储。
我们先来配置启动一个可扩展的 Elasticsearch 集群,然后在 Kubernetes ...
K8s-v1.18.3部署kube-Prometheus-0.5.0监控整个集群
简介前面我们学习了用自定义的方式来对 Kubernetes 集群进行监控,但是还是有一些缺陷,比如 Prometheus、AlertManager 这些组件服务本身的高可用。当然我们也完全可以用自定义的方式来实现这些需求,Promethues 在代码上就已经对 Kubernetes 有了原生的支持,可以通过服务发现的形式来自动监控集群,因此我们可以使用另外一种更加高级的方式来部署 Prometheus:Kube-Prometheus(Operator) 框架。
Operator是由CoreOS公司开发的,用来扩展 Kubernetes API,特定的应用程序控制器。它被用来创建、配置和管理复杂的有状态应用,如数据库、缓存和监控系统。Operator 是基于 Kubernetes 的资源和控制器概念之上构建,但同时又包含了应用程序特定的一些专业知识:比如创建一个数据库的Operator,则必须对创建的数据库的各种运维方式非常了解,创建Operator的关键是CRD(自定义资源)的设计。
[scode type=”red”] 注:CRD是对 Kubernetes API 的扩 ...
K8S节点故障重新调度时间参数
kubernetes节点失效后pod的调度过程
123450、Master每隔一段时间和node联系一次,判定node是否失联,这个时间周期配置项为 node-monitor-period ,默认5s1、当node失联后一段时间后,kubernetes判定node为notready状态,这段时长的配置项为 node-monitor-grace-period ,默认40s2、当node失联后一段时间后,kubernetes判定node为unhealthy,这段时长的配置项为 node-startup-grace-period ,默认1m0s3、当node失联后一段时间后,kubernetes开始删除原node上的pod,这段时长配置项为 pod-eviction-timeout ,默认5m0s# 在应用中,想要缩短pod的重启时间,可以修改上述几个参数
Shell变量删除与替换
shell变量删除与替换1、从左往右删除匹配内容123456789[root@localhost ~]# name=www.baidu.com.cn[root@localhost ~]# echo ${name} #获取变量值www.baidu.com.cn[root@localhost ~]# echo ${#name} #获取变量长度16[root@localhost ~]# echo ${name#*.} #从左往右最短匹配baidu.com.cn[root@localhost ~]# echo ${name##*.} #从左往右最长匹配cn
2、从右往左删除匹配内容1234[root@localhost ~]# echo ${name%.*} #从右往左最短匹配www.baidu.com[root@localhost ~]# echo ${name%%.*} #从右往左最短匹配www
3、切片1234[root@localhost ~]# echo $ ...
Centos7下Kubeadm安装k8s-v1.17.11
一。集群规划1.1 机器分配
节点名称
IP地址
k8s-master.nnv5.cn
192.168.1.41
k8s-node01.nnv5.cn
192.168.1.42
k8s-node02.nnv5.cn
192.168.1.43
1.2 软件版本
组件
描述
Linux
CentOS Linux release 7.6.1810 (Core)
Kubeadm
v1.17.11
Docker
18.09.9
二。环境配置
注意:环境配置所有节点都需要操作,这里只拿k8s-master.nnv5.cn这个节点来示例
2.1 修改主机名与hosts解析1234567891011121314151617/]$ hostnamectl set-hostname k8s-master.nnv5.cn/]$ vim /etc/hostnamek8s-master.nnv5.cn/]$ cat >> /etc/sysconfig/network <<EOFHOSTNAME=k8s-master.nnv5.cn ...
Centos7下Harbor私有镜像仓库部署
一。安装Docker-CE
名称
系统版本
Centos 7.6.1810 (Core)
IP地址
192.168.1.252(hub.nnv5.cn)
Harbor版本
1.10.3
harbor安装目录
/data/harbor
1.1 下载docker-ce镜像源并安装12~]$ cd /etc/yum.repos.d/ && wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo &&~]$ yum install -y docker-ce && systemctl enable docker && systemctl start docker
1.2 配置docker镜像加速1234567891011121314## 配置镜像加速器~]$ cat > /etc/docker/daemon.json << EOF{ "registry-mir ...
Centos7解压安装Mysql5.7以及备份恢复
一。Centos7解压安装Mysql5.71.在服务器上面下载mysql5.7源码包到服务器本地
1/]$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.27-el7-x86_64.tar
2.查看是否安装mariadb和mysql,有安装就将其卸载和删除
12/]$ rpm -qa |grep mysql/]$ yum install -y libaio
12345673.查看mysql用户和组是否存在,不存在就创建# 查看/]$ cat /etc/passwd | grep mysql/]$ cat /etc/group | grep mysql# 创建/]$ groupadd mysql/]$ useradd -s /sbin/nologin -M -r --G mysql mysql
4.解压mysql源码包并将解压后的目录移动到/usr/local目录下更名为mysql
123/]$ tar xzvf mysql-5.7.27-el7-x86_64.tar.gz/]$ t ...