Kube

进击的 Kubernetes 调度系统(二):支持批任务的 Coscheduling/Gang scheduling

ⅰ亾dé卋堺 提交于 2020-10-07 03:25:14
作者 | 王庆璨(阿里云技术专家)、张凯(阿里云高级技术专家) **导读:**阿里云容器服务团队结合多年 Kubernetes 产品与客户支持经验,对 Kube-scheduler 进行了大量优化和扩展,逐步使其在不同场景下依然能稳定、高效地调度各种类型的复杂工作负载。《进击的 Kubernetes 调度系统》系列文章将把我们的经验、技术思考和实现细节全面地展现给 Kubernetes 用户和开发者,期望帮助大家更好地了解 Kubernetes 调度系统的强大能力和未来发展方向。本文为该系列文章的第二篇。 前言 什么是 Coscheduling 和 Gang scheduling。Wikipedia 对 Coscheduling 的定义是“在并发系统中将多个相关联的进程调度到不同处理器上同时运行的策略”。在 Coscheduling 的场景中,最主要的原则是保证所有相关联的进程能够同时启动。防止部分进程的异常,导致整个关联进程组的阻塞。这种导致阻塞的部分异常进程,称之为“碎片(fragement)”。 在 Coscheduling 的具体实现过程中,根据是否允许“碎片”存在,可以细分为 Explicit Coscheduling,Local Coscheduling 和 Implicit Coscheduling。 其中 Explicit Coscheduling 就是大家常听到的

二进制部署K8s集群第13节之验证集群

拟墨画扇 提交于 2020-10-03 14:43:44
上一章:二进制部署K8s集群第12节Node节点之kube-proxy部署 架构图 一、创建一个资源配置清单nginx容器 在hdss7-21或hdss7-22任意一个节点上创建一个资源配置清单 cat > /root/nginx-ds.yaml <<eof apiVersion: apps/v1 kind: DaemonSet metadata: name: my-nginx spec: selector: matchLabels: app: my-nginx template: metadata: labels: app: my-nginx spec: containers: - name: my-nginx image: harbor.od.com/public/nginx:v1.7.9 ports: - containerPort: 80 eof kubectl create -f /root/nginx-ds.yaml 二、集群检查 hdss7-21、hdss7-22上检查 [root@hdss7-21 bin]# kubectl get cs # 查看各组件状态 Warning: v1 ComponentStatus is deprecated in v1.19+ NAME STATUS MESSAGE ERROR scheduler Healthy ok

二进制部署K8s集群第11节Node节点之kubelet部署

荒凉一梦 提交于 2020-10-03 14:43:32
上一章:二进制部署K8s集群第10节Master节点之部署四层反向代理 架构图 目录 1、架构 2、创建生成kubelet服务端证书csr的json配置文件 3、生成拷贝kubelet证书文件 4、下载pause镜像打tab 5、创建kubeconfig配置 6、拷贝配置 7、创建资源配置文件 8、应用查看资源配置 9、创建kubelet启动脚本 10、创建supervisor配置 11、启动检查打标签 1、架构 2、创建生成kubelet服务端证书csr的json配置文件 在hdss7-200.host.com上操作 cd /opt/certs/ cat > kubelet-csr.json <<eof { "CN": "k8s-kubelet", "hosts": [ "127.0.0.1", "10.4.7.10", "10.4.7.21", "10.4.7.22", "10.4.7.23", "10.4.7.24", "10.4.7.25", "10.4.7.26", "10.4.7.27", "10.4.7.28" ], "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "beijing", "L": "beijing", "O": "od", "OU": "ops" } ] }

kind:Kubernetes in Docker,单机运行 Kubernetes 群集的最佳方案?

岁酱吖の 提交于 2020-10-03 09:44:30
作者:gc(at)sysin.org,主页: www.sysin.org 请访问原文发布链接:< https://sysin.org/article/kind/>,查看最新版 。 是否没有足够的机器运行 Kubernetes 测试环境,个人电脑配置不高的话,运行多个节点的虚拟化有点力不从心,国内公有云主机一般不支持嵌套虚拟化,一套 3M+3N 的群集环境成本太高。VMware Fusion 12.0 发布,将 Kind 带入了我们的视野,这是 Google 官方的一个工具,可能是在单机运行 Kubernetes 群集的最佳方案。笔者在一台 1C 2G 的公有云虚机上运行 Kind,也不会因为计算资源有限而无法完成。 1. 简介 kind 是 Kubernetes in Docker 的简写,是一个使用 Docker 容器作为 Nodes,在本地创建和运行 Kubernetes 群集的工具。适用于在本机创建 Kubernetes 群集环境进行开发和测试。 官网:< https://kind.sigs.k8s.io/> ; kind 由以下组件构成: Go packages implementing cluster creation , image build , etc. A command line interface ( kind ) built on these

大规模微服务利器:eBPF 与 Kubernetes

天涯浪子 提交于 2020-10-03 07:21:46
Daniel 是 eBPF 两位 maintainer 之一,目前在 eBPF commits 榜单上排名第一,也是 Cilium 的核心开发者之一。 本文内容的时间跨度有 8 年,覆盖了 eBPF 发展的整个历史,非常值得一读。时间限制, Daniel 很多地方只是点到,没有展开。译文中加了一些延展阅读,有需要的同学可以参考。 eBPF 正在吞噬世界 Kubernetes 已经是云操作系统 Kubernetes 正在吞噬世界(eating the world)。越来越多的企业开始迁移到容器平台上 ,而 Kubernetes 已经是公认的云操作系统(Cloud OS)。从技术层面来说: Linux 内核是一切的坚实基础,例如,内核提供了 cgroup、namespace 等特性。 Kubernetes CNI 插件串联起了关键路径(critical path)上的组件。例如,从网络的 视角看,包括: 广义的 Pod 连通性:一个容器创建之后,CNI 插件会给它创建网络设备,移动到容 器的网络命名空间。 IPAM:CNI 向 IPAM 发送请求,为容器分配 IP 地址,然后配置路由。 Kubernetes 的 Service 处理和负载均衡功能。 网络策略的生效(network policy enforcement)。 监控和排障。 两个清晰的容器技术趋势

k8s(00)入门知识介绍

不想你离开。 提交于 2020-10-03 05:29:14
系列文章说明 本系列文章,可以基本算是 老男孩2019年王硕的K8S周末班课程 笔记,根据视频来看本笔记最好,否则有些地方会看不明白 需要视频可以联系我 k8s概念入门 目录 系列文章说明 k8s概念入门 1 四组基本概念 1.1 POD和POD控制器 1.2 Name/Namespace 1.3 Lable/Label选择器 1.4 Service/Ingress 2 核心组件与核心附件 2.1 核心组件功能 2.2 K8S的三条网络 3 K8S流程图 [K8S中文社区]( http://docs.kubernetes.org.cn/ 1 四组基本概念 Pod/Pod控制器 Name/Namespace Lable/Label选择器 Service/Ingress 1.1 POD和POD控制器 kubernetes 的pod控制器 Pod k8s里能够被运行的 最小逻辑单元 1个POD里面可以运行多个容器(SideCar 边车模式) POD中的容器共享 UTS/NAT/IPC 名称空间 POD和容器颗粒理解为豌豆荚和豌豆 Pod控制器 Pod控制器是Pod启动的一种模板 用来保证在K8S里启动的Pod始终按预期运行 包括副本数\生命周期\健康检查等 常用的Pod控制器: 控 度器名称 用途简述 Deployment 用于管理无状态应用,支持滚动更新和回滚 DaemonSet

kubernetes1.13.1部署metrics-server0.3.1

主宰稳场 提交于 2020-10-03 01:40:25
参考文档 https://kubernetes.io/docs/tasks/debug-application-cluster/core-metrics-pipeline/#metrics-server https://github.com/kubernetes-incubator/metrics-server/tree/master/deploy/1.8%2B https://www.cnblogs.com/cuishuai/p/9857120.html https://juejin.im/post/5b6592ace51d4515b01c11ed 文档目录 kubernetes1.13.1+etcd3.3.10+flanneld0.10集群部署 kubernetes1.13.1部署kuberneted-dashboard v1.10.1 kubernetes1.13.1部署coredns kubernetes1.13.1部署ingress-nginx并配置https转发dashboard kubernetes1.13.1部署metrics-server0.3.1 kubernetes1.13.1集群使用ceph rbd存储块 kubernetes1.13.1集群结合ceph rbd部署最新版本jenkins 简介 Metrics Server heapster 已经被废弃了

kubespray 1.14.3集群证书过期renew后kubelet启动失败

末鹿安然 提交于 2020-10-02 20:45:26
Aug 26 09:43:44 k8s-testn2 systemd[1]: kubelet.service failed. Aug 26 09:43:54 k8s-testn2 systemd[1]: kubelet.service holdoff time over, scheduling restart. Aug 26 09:43:54 k8s-testn2 systemd[1]: Stopped Kubernetes Kubelet Server. Aug 26 09:43:54 k8s-testn2 systemd[1]: Starting Kubernetes Kubelet Server... Aug 26 09:43:54 k8s-testn2 systemd[1]: Started Kubernetes Kubelet Server. Aug 26 09:43:54 k8s-testn2 kubelet[18749]: I0826 09:43:54.371222 18749 server.go:417] Version: v1.18.4 Aug 26 09:43:54 k8s-testn2 kubelet[18749]: I0826 09:43:54.371721 18749 plugins.go:100] No cloud provider specified.

kubernetes介绍

被刻印的时光 ゝ 提交于 2020-10-02 20:35:16
https://baike.baidu.com/item/kubernetes/22864162?fr=aladdin kubernetes,简称K8s, 是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 [1] 传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。 新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。 容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地

用hyperledger cello H3C分支创建kubernetes集群模式区块链系统

旧巷老猫 提交于 2020-10-02 10:39:10
承接上一篇文章 https://blog.csdn.net/rtxie/article/details/108866866 ,本文介绍使用hyperledger cello创建一套基于kubernetes集群模式的区块链系统。 准备工作,除了上一篇文章中的主机以外,单独准备一套kubernetes集群系统。 cello的编译和启动过程和上一篇文章相同,在这里不再赘述。operator-dashboard启动以后,点击主机管理->添加,然后“主机类型”选择“KUBERNETES”,添加主机名和对应的主机地址,主机地址的端口为6443,凭证类型选择“config”,然后切换到kubernetes集群的管理串口上,输入cat /root/.kube/config,把配置信息拷贝粘贴到添加主机界面的“配置内容”中,“nfs地址”填写operator-dashboard所在主机本身的ip地址,可以选择关闭ssl证书选项,如下: 在这里需要注意:kubernetes的安装方式不同,配置文件存放的位置可能会不一样,有些安装方式也有可能没有配置文件,这时候可以通过cert_key的方式导入证书和私钥来连接主机,证书和私钥的存放路径可以通过 kube-apiserver的配置文件来查看 。另外如果需要打开ssl验证,需要导入ssl证书,证书的存放路经也可以通过 kube