spec

Kubernetes系列之Kubernetes存储卷

巧了我就是萌 提交于 2020-03-16 03:23:43
第一章、前言 默认情况下容器的数据都是非持久化的, 在容器消亡以后数据也跟着丢失, 所以 Docker 提供了 Volume 机制以便将数据持久化存储。 类似的, Kubernetes 提供了更强大的 Volume 机制和丰富的插件, 解决了容器数据持久化和容器间共享数据的问题。 与 Docker 不同, Kubernetes Volume 的生命周期与 Pod 绑定容器挂掉后 Kubelet 再次重启容器时, Volume 的数据依然还在而 Pod 删除时, Volume 才会清理。 数据是否丢失取决于具体的 Volume 类型, 比如 emptyDir 的数据会丢失, 而 PV 的数据则不会丢 PersistentVolume(pv)和PersistentVolumeClaim(pvc)是k8s提供的两种API资源,用于抽象存储细节。管理员关注于如何通过pv提供存储功能而无需关注用户如何使用,同样的用户只需要挂载pvc到容器中而不需要关注存储卷采用何种技术实现。 pvc和pv的关系与pod和node关系类似,前者消耗后者的资源。pvc可以向pv申请指定大小的存储资源并设置访问模式。 第二章、pv pvc相关知识 生命周期 pv和pvc遵循以下生命周期: 1.供应准备。管理员在集群中创建多个pv供用户使用。  2.绑定。用户创建pvc并指定需要的资源和访问模式。在找到可用pv之前

k8s部署prometheus

﹥>﹥吖頭↗ 提交于 2020-03-13 11:02:28
https://www.kancloud.cn/huyipow/prometheus/527092 https://songjiayang.gitbooks.io/prometheus/content/demo/target.html 创建 monitoring namespaces apiVersion: v1 kind: Namespace metadata: name: monitoring Prometheus RBAC 权限管理 创建prometheus-k8s 角色账号 apiVersion: v1 kind: ServiceAccount metadata: name: prometheus-k8s namespace: monitoring 在kube-system 与 monitoring namespaces 空间,创建 prometheus-k8s 角色用户权限 。 apiVersion: rbac.authorization.k8s.io/v1beta1 kind: Role metadata: name: prometheus-k8s namespace: monitoring rules: - apiGroups: [""] resources: - nodes - services - endpoints - pods verbs: ["get",

Kubernetes 中的控制器

此生再无相见时 提交于 2020-03-11 18:23:03
Kubernetes 中的控制器 标签(空格分隔): kubernetes系列 一:kubernetes 中控制器 二:kubernetes 类型 一:kubernetes 中控制器 1.1 什么是控制器 Kubernetes 中内建了很多 controller(控制器),这些相当于一个状态机,用来控制 Pod 的具体状态和行为 1.2 控制器类型 ReplicationController 和 ReplicaSet Deployment DaemonSet StateFulSet Job/CronJob Horizontal Pod Autoscaling 1.2.1 ReplicationController 和 ReplicaSet ReplicationController(RC)用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退 出,会自动创建新的 Pod 来替代;而如果异常多出来的容器也会自动回收; 在新版本的 Kubernetes 中建议使用 ReplicaSet 来取代 ReplicationController 。ReplicaSet 跟 ReplicationController 没有本质的不同,只是名字不一样,并且 ReplicaSet 支持集合式的 selector 标签 1.2.2 Deployment Deployment 为 Pod

importlib 模块导入

孤人 提交于 2020-03-11 08:24:12
#1、动态导入模块 script_name = scripts.utils module = importlib.import_module(script_name)    # 动态导入相应模块 #2、模块引入检查 import importlib.util import importlib def check_module(module_name): ''' 检查module_name模块是否存在 ''' module_spec = importlib.util.find_spec(module_name) if module_spec is None: print("Module :{} not found".format(module_name)) return None else: print("Module:{} can be imported!".format(module_name)) return module_spec def import_module_from_spec(module_spec): ''' 动态导入模块 ''' module = importlib.util.module_from_spec(module_spec) module_spec.loader.exec_module(module) # module = importlib

深入理解 Ingress

大城市里の小女人 提交于 2020-03-09 10:09:55
Ingress为弥补NodePort不足而生 NodePort一些不足: • 一个端口只能一个服务使用,端口需提前规划 • 只支持4层负载均衡 nginx 动态感知pod ip 的变化,根据变化动态设置nginx 的upstream,并实现负载均衡 ingress controller 动态刷新 pod ip 列表 更新到 nginx 的配置文件 Pod与Ingress的关系 通过Service相关联 通过Ingress Controller实现Pod的负载均衡 - 支持TCP/UDP 4层和HTTP 7层 Ingress Controller 1. 部署Ingress Controller Nginx:官方维护的Ingress Controller 部署文档:https://github.com/kubernetes/ingress-nginx/blob/master/docs/deploy/index.md 注意事项: • 镜像地址修改成国内的:registry.aliyuncs.com/google_containers/nginx-ingress-controller:0.26.1 • 使用宿主机网络:hostNetwork: true wget https://raw.githubusercontent.com/kubernetes/ingress-nginx

一文搞懂 Traefik2.1 的使用

僤鯓⒐⒋嵵緔 提交于 2020-03-06 11:30:39
原文链接: 一文搞懂 Traefik2.1 的使用 一文搞懂 Traefik2.1 的使用 核心概念 安装 ACME 中间件 灰度发布 流量复制 TCP 简单 TCP 服务 带 TLS 证书的 TCP Traefik 是一个开源的可以使服务发布变得轻松有趣的边缘路由器。它负责接收你系统的请求,然后使用合适的组件来对这些请求进行处理。 除了众多的功能之外,Traefik 的与众不同之处还在于它会自动发现适合你服务的配置。当 Traefik 在检查你的服务时,会找到服务的相关信息并找到合适的服务来满足对应的请求。 Traefik 兼容所有主流的集群技术,比如 Kubernetes,Docker,Docker Swarm,AWS,Mesos,Marathon,等等;并且可以同时处理多种方式。(甚至可以用于在裸机上运行的比较旧的软件。) 使用 Traefik,不需要维护或者同步一个独立的配置文件:因为一切都会自动配置,实时操作的(无需重新启动,不会中断连接)。使用 Traefik,你可以花更多的时间在系统的开发和新功能上面,而不是在配置和维护工作状态上面花费大量时间。 核心概念 Traefik 是一个边缘路由器,是你整个平台的大门,拦截并路由每个传入的请求:它知道所有的逻辑和规则,这些规则确定哪些服务处理哪些请求;传统的反向代理需要一个配置文件,其中包含路由到你服务的所有可能路由,而

[k8s]-k8s入门

依然范特西╮ 提交于 2020-02-29 22:56:21
第1章 k8s系统架构 从系统架构来看,k8s分为2个节点 Master 控制节点 指挥官 Node 工作节点 干活的 1.Master节点组成 API Server :提供k8s API接口 主要处理Rest操作以及更新Etcd中的对象 是所有资源增删改查的唯一入口。 Scheduler:资源调度器 根据etcd里的节点资源状态决定将Pod绑定到哪个Node上 Controller Manager 负责保障pod的健康存在 资源对象的自动化控制中心,Kubernetes集群有很多控制器。 Etcd 这个是Kubernetes集群的数据库 所有持久化的状态信息存储在Etcd中 2.Node节点的组成 Docker Engine 负责节点容器的管理工作,最终创建出来的是一个Docker容器。 kubelet 安装在Node上的代理服务,用来管理Pods以及容器/镜像/Volume等,实现对集群对节点的管理。 kube-proxy 安装在Node上的网络代理服务,提供网络代理以及负载均衡,实现与Service通讯。 第2章 k8s逻辑架构 从逻辑架构上看,k8s分为 Pod Controller Service 1.POD POD是k8s的最小单位 POD的IP地址是随机的,删除POD会改变IP POD都有一个根容器 一个POD内可以由一个或多个容器组成

如何制作一个 RPM 文件

落爺英雄遲暮 提交于 2020-02-27 23:04:52
它们是包含文件和元数据的档案文件。当安装或卸载 RPM 时,此元数据告诉 RPM 在哪里创建或删除文件。正如你将在上一篇文章中记住的,元数据还包含有关“依赖项”的信息,它可以是“运行时”或“构建时”的依赖信息。 例如,让我们来看看 fpaste。你可以使用 dnf 下载该 RPM。这将下载 Fedora 存储库中可用的 fpaste 最新版本。在 Fedora 30 上,当前版本为 0.3.9.2: $ dnf download fpaste ... fpaste-0.3.9.2-2.fc30.noarch.rpm 由于这是个构建 RPM,因此它仅包含使用 fpaste 所需的文件: $ rpm -qpl ./fpaste-0.3.9.2-2.fc30.noarch.rpm /usr/bin/fpaste /usr/share/doc/fpaste /usr/share/doc/fpaste/README.rst /usr/share/doc/fpaste/TODO /usr/share/licenses/fpaste /usr/share/licenses/fpaste/COPYING /usr/share/man/man1/fpaste.1.gz 源 RPM 在此链条中的下一个环节是源 RPM。Fedora 中的所有软件都必须从其源代码构建。我们不包括预构建的二进制文件。因此

Kubernetes服务篇

被刻印的时光 ゝ 提交于 2020-02-27 03:44:13
前言 上文介绍了 Kubernetes副本机制 ,正是因为副本机制你的部署能自动保待运行,并且保持健康,无须任何手动干预;本文继续介绍kubernetes的另一个强大的功能 服务 ,在客户端和pod之间提供一个服务层,提供了单一的接入点,更加方便客户端使用pod。 服务 Kubernetes服务是一种为一组功能相同的pod提供单一不变的接入点的资源;当服务存在时,它的IP地址和端口不会改变,客户端通过IP地址和端口号建立连接,这些连接会被路由到提供该服务的任意一个pod上; 1.创建服务 服务的连接对所有的后端pod是负载均衡的,至于哪些pod被属于哪个服务,通过在定义服务的时候设置标签选择器; [d:\k8s]$ kubectl create -f kubia-rc.yaml replicationcontroller/kubia created [d:\k8s]$ kubectl get pod NAME READY STATUS RESTARTS AGE kubia -6d xn7 0 / 1 ContainerCreating 0 4s kubia-fhxht 0 / 1 ContainerCreating 0 4s kubia-fpvc7 0 / 1 ContainerCreating 0 4s 使用之前的yaml文件创建pod,模版中设置的标签为 app: kubia

私有pod简记

橙三吉。 提交于 2020-02-26 06:57:10
http://www.jianshu.com/p/7a82e977281c http://www.jianshu.com/p/ddc2490bff9f 两个工程 1 代码工程 在github上创建一个空的工程, License文件记得加上. (MIT License) git clone到本地 或 用 sourcetree 下载到本地. 1.1 在代码工程中添加所需要代码, 并生成 spec 文件 , 注意在 sourcetree 加 tag.( 加 tag 后 , 要再提交一个东西 , 不然这个 tag 找不到 ??) pod spec create WeLib02 或 从其他地方复制一份过来再修改 . 我们在 github 上创建一个空的仓库,命名为 WeLib02Specs ,这个仓库是用来存放我们自己所有的私有库的 spec 文件,就如同官方的 https://github.com/CocoaPods/Specs 是用来存放所有官方的 specs 文件一样。 3 提交文件后再 lint LMXMN041:WeLib04 will.wei$ pod lib lint -> WeLib04 (0.0.1) WeLib04 passed validation. 4 把 podspec 文件push到自己的spec工程库 LMXMN041:WeLib04 will.wei$ pod