Kubernetes通过label实现将pod运行在指定得node上. 默认配置下,Schesuler将pod调度到所有可用得node,有时候我们希望将pod部署到指定得node,比如将有大量磁盘I/O得pod部署到配置了SSD得node:或者pod需要GPU,需要运行在配置了GPU得节点上 label是key-value对,各种资源都可以设置label,灵活添加各种自定义得属性: 可以执行如下命令设置node得label kubectl label node k8snode2  disktyp…
默认配置下,Scheduler 会将 Pod 调度到所有可用的 Node.不过有些情况我们希望将 Pod 部署到指定的 Node,比如将有大量磁盘 I/O 的 Pod 部署到配置了 SSD 的 Node:或者 Pod 需要 GPU,需要运行在配置了 GPU 的节点上. Kubernetes 是通过 label 来实现这个功能的. label 是 key-value 对,各种资源都可以设置 label,灵活添加各种自定义属性.比如执行如下命令标注 k8s-node1 是配置了 SSD 的节点. k…
默认配置下,Scheduler 会将 Pod 调度到所有可用的 Node.不过有些情况我们希望将 Pod 部署到指定的 Node,比如将有大量磁盘 I/O 的 Pod 部署到配置了 SSD 的 Node:或者 Pod 需要 GPU,需要运行在配置了 GPU 的节点上. Kubernetes 是通过 label 来实现这个功能的. label 是 key-value 对,各种资源都可以设置 label,灵活添加各种自定义属性.比如执行如下命令标注 k8s-node1 是配置了 SSD 的节点. k…
一.前言    Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动态扩缩容等功能套件,目前centos yum源上最新版本为1.5.2. 本文基于Centos7.5构建Kubernetes平台,在正式介绍之前,大家有必要先理解Kubernetes几个核心概念及其承担的功能. 以下为Kubernetes的架构设计图: 1. Pods    在Kubernetes系统中,调度的最小颗粒不是单纯的容器,而是抽象成一个…
默认情况下,scheduler会将pod调度到所有可用的Node,不过有些情况我们希望将 Pod 部署到指定的 Node,比如将有大量磁盘 I/O 的 Pod 部署到配置了 SSD 的 Node:或者 Pod 需要 GPU,需要运行在配置了 GPU 的节点上. kubernetes通过label来实现这个功能 label 是 key-value 对,各种资源都可以设置 label,灵活添加各种自定义属性.比如执行如下命令标注 k8s-node1 是配置了 SSD 的节点 首先我们给k8s-nod…
首先介绍下什么是Label? Label是Kubernetes系列中一个核心概念.是一组绑定到K8s资源对象上的key/value对.同一个对象的labels属性的key必须唯一.label可以附加到各种资源对象上,如Node,Pod,Service,RC等. 通过给指定的资源对象捆绑一个或多个不用的label来实现多维度的资源分组管理功能,以便于灵活,方便地进行资源分配,调度,配置,部署等管理工作. 默认配置下,Scheduler 会将 Pod 调度到所有可用的 Node.不过有些实际情况我们…
首先介绍下什么是Label? Label是Kubernetes系列中一个核心概念.是一组绑定到K8s资源对象上的key/value对.同一个对象的labels属性的key必须唯一.label可以附加到各种资源对象上,如Node,Pod,Service,RC等. 通过给指定的资源对象捆绑一个或多个不用的label来实现多维度的资源分组管理功能,以便于灵活,方便地进行资源分配,调度,配置,部署等管理工作. 默认配置下,Scheduler 会将 Pod 调度到所有可用的 Node.不过有些实际情况我们…
上一节我们讨论了 Service 部署的两种模式:global mode 和 replicated mode.无论采用 global mode 还是 replicated mode,副本运行在哪些节点都是由 Swarm 决定的,作为用户我们有没有可能精细控制 Service 的运行位置呢? 答案是:能,使用 label. 逻辑分两步: 为每个 node 定义 label. 设置 service 运行在指定 label 的 node 上. label 可以灵活描述 node 的属性,其形式是 ke…
参考https://www.cnblogs.com/CloudMan6/p/8038799.html   上一节我们讨论了 Service部署的两种模式,global mode 和 replicated mode .无论global mode 还是replicated mode ,副本运行在哪些节点都是由Swarm决定的.   那么作为用户我们没有可能精细控制 Service运行的位置呢? 答案是:能 , 使用label   过程分两步:     1.为每个node 定义label     2.…
陆陆续续,关于 Kubernetes 写了有 20+ 篇文章了. 今天这篇文章来一个整合,从实践到理论,可以按需查看(我是按照博客发表时间来排序的,如果后续有想要更新的内容,也会及时更新到这篇文章中). 实践篇(共 11 篇): [Docker]CentOS7下Docker安装教程 [Kubernetes]CentOS7下搭建Harbor仓库 [Kubernetes]CentOS7下Etcd集群搭建 [Kubernetes]CentOS7部署Kubernetes集群 [Docker]CentOS…
环境:三个centos7 K8s2是Master;K8s1是node1:K8s3是node2 官方文档:https://kubernetes.io/docs/setup/independent/install-kubeadm/ 注意:kubernetes几乎所有的安装组件和docker 镜像都放在goolge自己的网站上 安装docker 所有节点都安装docker:可利用docker-machine安装:可参考:https://www.cnblogs.com/lkun/p/7655495.ht…
Etcd简要介绍 Etcd是Kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息 Etcd构建自身高可用集群主要有三种形式: ①静态发现: 预先已知 Etcd 集群中有哪些节点,在启动时直接指定好Etcd的各个node节点地址 ②Etcd动态发现:通过已有的Etcd集群作为数据交互点,然后在扩展新的集群时实现通过已有集群进行服务发现的机制 ③DNS动态发现:通过DNS查询方式获取其他节点地址信息 这篇文章主要介绍第一种方式.后期如果还有时间和精力研究的话,我…
滚动更新:一次只更新一小部分副本,成功后,在更新更多的副本,最终完成所有副本的更新. 滚动更新的最大好处是零停机,整个更新过程始终有副本在运行,从而保证了业余的连续性 下面部署三个副本的应用,出事镜像为httpd:2.2.31,然后将其更新到 httpd:2.2.32. 将配置文件中的 httpd:2.2.31 替换为 httpd:2.2.32,再次执行 kubectl apply 现在httpd的deployment镜像变成了httpd:2.2.32 从pod的运行时间来看或者从deploym…
Cluster cluster是计算,存储和网络资源的集合,kubernetes是利用这些资源运行各种基于容器的应用 Master Master是cluster的大脑,他的主要职责是调度,即决定应用在哪里运行.master运行linux操作系统,可以是物理机或者虚拟机.为了实现高可用,可以运行多个master. Node Node的职责是运行容器应用.Node有master管理,Node负责监控并汇报容器的状态,并根据master的要求管理容器的生命周期.Node运行在linux操作系统,可以是…
文章是按https://blog.csdn.net/Excairun/article/details/88962769,来进行操作并记录相关结果 版本:k8s V14.0,docker-ce 18.09.03 1.环境准备 内核及版本 [root@k8s-node1 ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@k8s-node1 ~]# uname -r -.el7.x86_64 [root@k8s-node1 ~]…
Kubenetes cluster 由master和node组成 Master是kubenetes的大脑.运行着以下进程:kube-apiserver.kube-scheduler.kube-controller-manager.etcd 和 Pod 网络(例如 flannel). API Server(kube-apiserver) API Server 提供 HTTP/HTTPS RESTful API,即 Kubernetes API.API Server 是 Kubernetes Clu…
环境依赖: Harbor仓库需要环境:Python 2.7或以上版本,Docker 1.10或以上,Docker Compose 1.6.0或以上. CentOS7自带Python,所以不需要安装. 关于Docker安装已经写过一篇博客:[Docker]CentOS7下Docker安装教程 所以接下来说一说docker-compose. 部署docker-compose(这里是以1.16.1版本为例,具体版本可以根据自己需要进行下载): curl -L https://github.com/do…
目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4.关闭防火墙 1.5.关闭交换分区 1.6.关闭 SeLinux 1.7.配置 IPTABLES 1.8.安装 NTP 1.9.升级内核 2.安装 Docker 18.06.1-ce 2.1.删除旧版本的 Docker 2.2.设置存储库 2.3.安装 Docker 2.4.启动 Docker 3.…
参考资料:官方文档 一.虚拟机安装 配置说明: windows下使用vbox,centos17.6 min版,kubernetes的版本是1.14.1, 安装如下三台机器: 192.168.56.15 k15192.168.56.16 k16192.168.56.17 k17 其中k15作为master,k16和k17作为node,虚拟机的安装重点关注网卡设置,设置两个网卡,第一个网卡(ifcfg-enp0s3)Host Only模式,第二个网卡(ifcfg-enp0s8)NAT模式,参见下图…
系列目录 动态准入控制器文档介绍了如何使用标准的,插件式的准入控制器.但是,但是由于以下原因,插件式的准入控制器在一些场景下并不灵活: 它们需要编译到kube-apiserver里 它们仅在apiserver启动的时候可以配置 准入钩子(Admission Webhooks 从1.9版本开始)解决了这些问题,它允许准入控制器独立于核心代码编译并且可以在运行时配置. 什么是准入钩子 准入钩子是一种http回调,它接收准入请求然后做一些处理.你可以定义两种类型的准入钩子:验证钩子和变换钩子.对于验证…
一.本地实验环境准备 服务器虚拟机准备 IP CPU 内存 hostname 192.168.222.129 >=2c >=2G master 192.168.222.130 >=2c >=2G node1 192.168.222.131 >=2c >=2G node2 本实验我这里用的虚拟机是vmware workstation创建的,我的机器配置较低,所以master给了4G 4C,node每个给了4G 4C,大家根据自己的资源情况,按照上面给的建议最低值创建即可.…
在网上看了不少关于Kubernetes的视频,虽然现在还未用上,但是也是时候总结记录一下,父亲常教我的一句话:学到手的东西总有一天会有用!我也相信在将来的某一天会用到现在所学的技术.废话不多扯了.... 一.前期准备 1.k8s-master01:master主服务器(存在单点故障) 2.k8s-node01.k8s-node02:2个工作节点 3.Harbor:私有仓库(简单记录搭建Harbor私服仓库) 4.Router:软路由(由于kubeadm是存放在谷歌云的,国内无法访问,K8S集群搭…
一,为什么要为node指定label? 通常scheduler会把pod调度到所有可用的Node,有的情况下我们希望能把 Pod 部署到指定的 Node, 例如: 有的Node上配备了速度更快的SSD磁盘 有的Node上配备了性能更强的GPU, 这样pod中的应用才能更好的发挥node的硬件优势   说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest 对应的源码可以访问这里获取: https://github.com/…
Kubernetes 网络概念及策略控制 本文将主要分享以下 5 方面的内容: Kubernetes 基本网络模型: Netns 探秘: 主流网络方案简介: Network Policy 的用处: 思考时间. Kubernetes 基本网络模型 本节来介绍一下 Kubernetes 对网络模型的一些想法.大家知道 Kubernetes 对于网络具体实现方案,没有什么限制,也没有给出特别好的参考案例.Kubernetes 对一个容器网络是否合格做出了限制,也就是 Kubernetes 的容器网络模…
系列目录 在为对象定义好Label后,其他对象就可以通过Label来对对象进行引用.Label的最常见的用法便是通过spec.selector来引用对象. apiVersion: v1 kind: ReplicationController metadata: name: nginx spec: replicas: 3 selector: app: nginx template: metadata: labels: app: nginx spec: containers: - name: ngi…
官方安装手册 https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/ 组件和版本关系 https://kubernetes.io/docs/setup/release/version-skew-policy/#supported-versions 添加Docker阿里云源 # step 1: 安装必要的一些系统工具sudo yum install -y yum-ut…
基本概念 Docker 是什么 Docker 起初是 dotCloud 公司创始人 Solomon Hykes 在法国的时候发起的一项公司内部项目,Docker 是基于 dotCloud 公司多年云服务技术的一次革新,在 2013 年 3 月以 Apache 2.0 授权协议进行开源,其项目主要代码在 GitHub 上进行维护,自从 Docker 开源之后,就一直受到了广泛讨论和关注. Docker 进行开发实现使用的是 Google 公司推出的 Go 语言,对进程进行封装隔离是基于 Linux…
最近在倒腾Kubernetes的一些东西,这次需要用到Jenkins来实现自动化构建.来讲一讲搭建的整个过程. Jenkins是什么 Jenkins提供了软件开发的持续集成服务.它运行在Servlet容器中(例如Apache Tomcat).它支持软件配置管理(SCM)工具(包括AccuRev SCM.CVS.Subversion.Git.Perforce.Clearcase和RTC),可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处…
一  为啥需要为命名空间里面添加pod添加默认的requests和limits? 通过前面的学习我们已经知道,如果节点上面的pod没有设置requests和limits,这些容器就会受那些设置了的控制,一旦出现节点内存资源超卖,这些未被设置的pod则会优先被kubernetes清除,所以对于每个pod而言,都应当给设定requests和limits值是个不错的选择. 1.1 介绍limitRange资源 limitRange不仅支持用户给命名空间里面的pod每种资源配置最大最小值,甚至还会在没有…
节点污点可以用来让pod远离特定的节点,尽量在不修改已有pod信息的前提,通过在节点添加污点信息,来拒绝pod在某些节点上的部署. 而现在介绍一种叫做节点亲缘性,通过明确的在pod中添加的信息,来决定一个pod可以或者不可以被调度到哪些节点上. 对比节点亲缘性和节点选择器 在早期版本的Kubernetes中,初始的节点亲缘性机制,就是pod描述中的nodeSelector字段.节点必须包含所有pod对应字段中的指定label,才能成为pod调度的目标节点. 节点选择器实现简单,但是它不能满足你的…