01 2020 档案

摘要:RBAC——基于角色的访问控制 以下内容是 xingzhou 对 kubernetes 官方文档的翻译,原文地址 https://k8smeetup.github.io/docs/admin/authorization/rbac/ 基于角色的访问控制(Role-Based Access Contro 阅读全文
posted @ 2020-01-17 16:18 Mr.peter 阅读(175) 评论(0) 推荐(0) 编辑
摘要:Service Account为Pod中的进程提供身份信息。 注意:本文是关于 Service Account 的用户指南,管理指南另见 Service Account 的集群管理指南 。 本文档描述的关于 Service Account 的行为只有当您按照 Kubernetes 项目建议的方式搭建 阅读全文
posted @ 2020-01-17 15:24 Mr.peter 阅读(410) 评论(0) 推荐(0) 编辑
摘要:Traefik Ingress Controller 我们在前面部署了 Traefik 作为Ingress Controller,如果集群外部直接访问Kubenretes内部服务的话,可以直接创建Ingress如下所示: apiVersion: extensions/v1beta1 kind: In 阅读全文
posted @ 2020-01-17 15:19 Mr.peter 阅读(437) 评论(0) 推荐(0) 编辑
摘要:Ingress解析 Ingress 是从Kubernetes集群外部访问集群内部服务的入口,这篇文章部分译自Kubernetes官方文档Ingress Resource,后面的章节会讲到使用Traefik来做Ingress controller,文章末尾给出了几个相关链接。 术语 在本篇文章中你将会 阅读全文
posted @ 2020-01-17 15:17 Mr.peter 阅读(298) 评论(0) 推荐(0) 编辑
摘要:Service Kubernetes Pod 是有生命周期的,它们可以被创建,也可以被销毁,然而一旦被销毁生命就永远结束。 通过 ReplicationController 能够动态地创建和销毁 Pod。 每个 Pod 都会获取它自己的 IP 地址,即使这些 IP 地址不总是稳定可依赖的。 这会导致 阅读全文
posted @ 2020-01-17 10:31 Mr.peter 阅读(324) 评论(0) 推荐(0) 编辑
摘要:准入控制器(Admission Controller) 准入控制器(Admission Controller)位于 API Server 中,在对象被持久化之前,准入控制器拦截对 API Server 的请求,一般用来做身份验证和授权。其中包含两个特殊的控制器:MutatingAdmissionWe 阅读全文
posted @ 2020-01-16 17:48 Mr.peter 阅读(1656) 评论(0) 推荐(0) 编辑
摘要:自定义指标HPA Kubernetes中不仅支持CPU、内存为指标的HPA,还支持自定义指标的HPA,例如QPS。 本文中使用的yaml文件见manifests/HPA。 设置自定义指标 kubernetes1.6 在kubernetes1.6集群中配置自定义指标的HPA的说明已废弃。 在设置定义指 阅读全文
posted @ 2020-01-16 17:46 Mr.peter 阅读(2051) 评论(0) 推荐(0) 编辑
摘要:Horizontal Pod Autoscaling 应用的资源使用率通常都有高峰和低谷的时候,如何削峰填谷,提高集群的整体资源利用率,让service中的Pod个数自动调整呢?这就有赖于Horizontal Pod Autoscaling了,顾名思义,使Pod水平自动缩放。这个Object(跟Po 阅读全文
posted @ 2020-01-16 17:42 Mr.peter 阅读(736) 评论(0) 推荐(0) 编辑
摘要:CronJob Cron Job 管理基于时间的 Job,即: 在给定时间点只运行一次 周期性地在给定时间点运行 一个 CronJob 对象类似于 crontab (cron table)文件中的一行。它根据指定的预定计划周期性地运行一个 Job,格式可以参考 Cron 。 前提条件 当前使用的 K 阅读全文
posted @ 2020-01-16 17:30 Mr.peter 阅读(181) 评论(0) 推荐(0) 编辑
摘要:Job Job负责批处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。 Job Spec格式 spec.template格式同Pod RestartPolicy仅支持Never或OnFailure 单个Pod时,默认Pod成功运行后Job即结束 .spec.completio 阅读全文
posted @ 2020-01-16 17:24 Mr.peter 阅读(1210) 评论(0) 推荐(0) 编辑
摘要:ReplicationController和ReplicaSet ReplicationController用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动回收。 在新版本的Kubernetes中建议使用Replic 阅读全文
posted @ 2020-01-16 17:21 Mr.peter 阅读(530) 评论(0) 推荐(0) 编辑
摘要:DaemonSet 什么是 DaemonSet? DaemonSet 确保全部(或者一些)Node 上运行一个 Pod 的副本。当有 Node 加入集群时,也会为他们新增一个 Pod 。当有 Node 从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 阅读全文
posted @ 2020-01-16 17:18 Mr.peter 阅读(549) 评论(0) 推荐(0) 编辑
摘要:StatefulSet StatefulSet 作为 Controller 为 Pod 提供唯一的标识。它可以保证部署和 scale 的顺序。 使用案例参考:kubernetes contrib - statefulsets,其中包含zookeeper和kakfa的statefulset设置和使用说 阅读全文
posted @ 2020-01-16 16:26 Mr.peter 阅读(282) 评论(0) 推荐(0) 编辑
摘要:Deployment 简述 Deployment 为 Pod 和 ReplicaSet 提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController 来方便的管理应用。典型的应用场景包括: 定义Deployment来创建Pod和ReplicaSet 滚 阅读全文
posted @ 2020-01-16 14:56 Mr.peter 阅读(423) 评论(0) 推荐(0) 编辑
摘要:垃圾收集 Kubernetes 垃圾收集器的角色是删除指定的对象,这些对象曾经有但以后不再拥有 Owner 了。 注意:垃圾收集是 beta 特性,在 Kubernetes 1.4 及以上版本默认启用。 Owner 和 Dependent 一些 Kubernetes 对象是其它一些的 Owner。例 阅读全文
posted @ 2020-01-15 17:49 Mr.peter 阅读(534) 评论(0) 推荐(0) 编辑
摘要:Taint(污点)和 Toleration(容忍)可以作用于 node 和 pod 上,其目的是优化 pod 在集群间的调度,这跟节点亲和性类似,只不过它们作用的方式相反,具有 taint 的 node 和 pod 是互斥关系,而具有节点亲和性关系的 node 和 pod 是相吸的。另外还有可以给 阅读全文
posted @ 2020-01-15 17:27 Mr.peter 阅读(301) 评论(0) 推荐(0) 编辑
摘要:Annotation Annotation,顾名思义,就是注解。Annotation可以将Kubernetes资源对象关联到任意的非标识性元数据。使用客户端(如工具和库)可以检索到这些元数据。 关联元数据到对象 Label和Annotation都可以将元数据关联到Kubernetes资源对象。Lab 阅读全文
posted @ 2020-01-15 17:06 Mr.peter 阅读(1454) 评论(0) 推荐(0) 编辑
摘要:Label Label是附着到object上(例如Pod)的键值对。可以在创建object的时候指定,也可以在object创建后随时指定。Labels的值对系统本身并没有什么含义,只是对用户才有意义。 "labels": { "key1" : "value1", "key2" : "value2" 阅读全文
posted @ 2020-01-15 16:57 Mr.peter 阅读(521) 评论(0) 推荐(0) 编辑
摘要:Namespace 在一个Kubernetes集群中可以使用namespace创建多个“虚拟集群”,这些namespace之间可以完全隔离,也可以通过某种方式,让一个namespace中的service可以访问到其他的namespace中的服务,我们在CentOS中部署kubernetes1.6集群 阅读全文
posted @ 2020-01-15 16:46 Mr.peter 阅读(448) 评论(0) 推荐(0) 编辑
摘要:Node Node是kubernetes集群的工作节点,可以是物理机也可以是虚拟机。 Node的状态 Node包括如下状态信息: Address HostName:可以被kubelet中的--hostname-override参数替代。 ExternalIP:可以被集群外部路由到的IP地址。 Int 阅读全文
posted @ 2020-01-15 16:31 Mr.peter 阅读(364) 评论(0) 推荐(0) 编辑
摘要:Pod中断与PDB(Pod中断预算) 这篇文档适用于要构建高可用应用程序的所有者,因此他们需要了解 Pod 可能发生什么类型的中断。也适用于要执行自动集群操作的集群管理员,如升级和集群自动扩容。 自愿中断和非自愿中断 Pod 不会消失,直到有人(人类或控制器)将其销毁,或者当出现不可避免的硬件或系统 阅读全文
posted @ 2020-01-14 18:01 Mr.peter 阅读(793) 评论(0) 推荐(0) 编辑
摘要:Pod Preset 注意:PodPreset 资源对象只有 kubernetes 1.8 以上版本才支持。 Preset 就是预设,有时候想要让一批容器在启动的时候就注入一些信息,比如 secret、volume、volume mount 和环境变量,而又不想一个一个的改这些 Pod 的 temp 阅读全文
posted @ 2020-01-14 17:55 Mr.peter 阅读(335) 评论(0) 推荐(0) 编辑
摘要:Pod hook Pod hook(钩子)是由Kubernetes管理的kubelet发起的,当容器中的进程启动前或者容器中的进程终止之前运行,这是包含在容器的生命周期之中。可以同时为Pod中的所有容器都配置hook。 Hook的类型包括两种: exec:执行一段命令 HTTP:发送HTTP请求。 阅读全文
posted @ 2020-01-14 17:42 Mr.peter 阅读(376) 评论(0) 推荐(0) 编辑
摘要:Pod 的生命周期 Pod phase Pod 的 status 字段是一个 PodStatus 对象,PodStatus中有一个 phase 字段。 Pod 的相位(phase)是 Pod 在其生命周期中的简单宏观概述。该阶段并不是对容器或 Pod 的综合汇总,也不是为了做为综合状态机。 Pod 阅读全文
posted @ 2020-01-14 17:17 Mr.peter 阅读(484) 评论(0) 推荐(0) 编辑
摘要:待编辑 阅读全文
posted @ 2020-01-14 17:07 Mr.peter 阅读(193) 评论(0) 推荐(0) 编辑
摘要:Pod 安全策略 PodSecurityPolicy 类型的对象能够控制,是否可以向 Pod 发送请求,该 Pod 能够影响被应用到 Pod 和容器的 SecurityContext。 查看 Pod 安全策略建议 获取更多信息。 什么是 Pod 安全策略? Pod 安全策略 是集群级别的资源,它能够 阅读全文
posted @ 2020-01-14 16:16 Mr.peter 阅读(929) 评论(0) 推荐(0) 编辑
摘要:Pause容器 Pause容器,又叫Infra容器,本文将探究该容器的作用与原理。 我们知道在kubelet的配置中有这样一个参数: KUBELET_POD_INFRA_CONTAINER pod-infra-container-image=registry.access.redhat.com/rh 阅读全文
posted @ 2020-01-14 15:56 Mr.peter 阅读(746) 评论(0) 推荐(0) 编辑
摘要:Init 容器 该特性在自 Kubernetes 1.6 版本推出 beta 版本。Init 容器可以在 PodSpec 中同应用程序的 containers 数组一起来指定。此前 beta 注解的值仍将保留,并覆盖 PodSpec 字段值。 本文讲解 Init 容器的基本概念,这是一种专用的容器, 阅读全文
posted @ 2020-01-14 14:37 Mr.peter 阅读(1244) 评论(0) 推荐(0) 编辑
摘要:Pod解析 Pod是kubernetes中可以创建的最小部署单元。 V1 core版本的Pod的配置模板见Pod template。 什么是Pod? Pod就像是豌豆荚一样,它由一个或者多个容器组成(例如Docker容器),它们共享容器存储、网络和容器运行配置项。Pod中的容器总是被同时调度,有共同 阅读全文
posted @ 2020-01-14 10:21 Mr.peter 阅读(591) 评论(0) 推荐(0) 编辑
摘要:Pod概览 理解Pod Pod是kubernetes中你可以创建和部署的最小也是最简的单位。Pod代表着集群中运行的进程。 Pod中封装着应用的容器(有的情况下是好几个容器),存储、独立的网络IP,管理容器如何运行的策略选项。Pod代表着部署的一个单位:kubernetes中应用的一个实例,可能由一 阅读全文
posted @ 2020-01-12 19:56 Mr.peter 阅读(220) 评论(0) 推荐(0) 编辑
摘要:Objects 以下列举的内容都是 kubernetes 中的 Object,这些对象都可以在 yaml 文件中作为一种 API 类型来配置。 Pod Node Namespace Service Volume PersistentVolume Deployment Secret StatefulS 阅读全文
posted @ 2020-01-12 19:14 Mr.peter 阅读(528) 评论(0) 推荐(0) 编辑
摘要:CSI - Container Storage Interface(容器存储接口) CSI 代表容器存储接口,CSI 试图建立一个行业标准接口的规范,借助 CSI 容器编排系统(CO)可以将任意存储系统暴露给自己的容器工作负载。有关详细信息,请查看设计方案。 csi 卷类型是一种 out-tree( 阅读全文
posted @ 2020-01-10 18:00 Mr.peter 阅读(1294) 评论(0) 推荐(0) 编辑
摘要:CNI - Container Network Interface(容器网络接口) CNI(Container Network Interface)是CNCF旗下的一个项目,由一组用于配置Linux容器的网络接口的规范和库组成,同时还包含了一些插件。CNI仅关心容器创建时的网络分配,和当容器被删除时 阅读全文
posted @ 2020-01-10 17:55 Mr.peter 阅读(1057) 评论(0) 推荐(0) 编辑
摘要:CRI - Container Runtime Interface(容器运行时接口) CRI中定义了容器和镜像的服务的接口,因为容器运行时与镜像的生命周期是彼此隔离的,因此需要定义两个服务。该接口使用Protocol Buffer,基于gRPC,在Kubernetes v1.10+版本中是在pkg/ 阅读全文
posted @ 2020-01-10 17:45 Mr.peter 阅读(775) 评论(0) 推荐(0) 编辑
摘要:开放接口 Kubernetes作为云原生应用的基础调度平台,相当于云原生的操作系统,为了便于系统的扩展,Kubernetes中开放的以下接口,可以分别对接不同的后端,来实现自己的业务逻辑: CRI(Container Runtime Interface):容器运行时接口,提供计算资源 CNI(Con 阅读全文
posted @ 2020-01-10 17:41 Mr.peter 阅读(1006) 评论(0) 推荐(0) 编辑
摘要:Etcd是Kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息。在后面具体的安装环境中,我们安装的etcd的版本是v3.1.5,整个kubernetes系统中一共有两个服务需要用到etcd用来协同和存储配置,分别是: 网络插件flannel、对于其它网络插件也需 阅读全文
posted @ 2020-01-10 17:34 Mr.peter 阅读(1076) 评论(0) 推荐(0) 编辑
摘要:整体架构 Master架构 Node架构 分层架构 Kubernetes设计理念和功能其实就是一个类似Linux的分层架构,如下图所示。 核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等) 阅读全文
posted @ 2020-01-10 17:00 Mr.peter 阅读(544) 评论(0) 推荐(0) 编辑
摘要:Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统。Kubernetes的目标旨在消除编排物理/虚拟计算,网络和存储基础设施的负担,并使应用程序运营商和开发人员完全将重点放在以容器为中心的原语上进行自助运营。 Borg简介 Borg是谷歌内部的大规模集群管理系统, 阅读全文
posted @ 2020-01-10 16:47 Mr.peter 阅读(614) 评论(0) 推荐(0) 编辑
摘要:云原生实际上是一种理念或者说是方法论,它包括如下四个方面: 容器化:作为应用包装的载体 持续交付:利用容器的轻便的特性,构建持续集成和持续发布的流水线 DevOps:开发与运维之间的协同,上升到一种文化的层次,能够让应用快速的部署和发布 微服务:这是应用开发的一种理念,将单体应用拆分为微服务才能更好 阅读全文
posted @ 2020-01-10 15:54 Mr.peter 阅读(275) 评论(0) 推荐(0) 编辑
摘要:pivotal是云原生应用的提出者,并推出了 Pivotal Cloud Foundry 云原生应用平台和 Spring 开源 Java 开发框架,成为云原生应用架构中先驱者和探路者。 Pivotal最初的定义 早在2015年Pivotal公司的Matt Stine写了一本叫做迁移到云原生应用架构的 阅读全文
posted @ 2020-01-10 14:50 Mr.peter 阅读(469) 评论(0) 推荐(0) 编辑
摘要:安全容器,kata为解决容器的安全而生。Kata容器与容器一样轻便,快速,并与容器管理层集成在一起,包括流行的编排工具,例如Docker和Kubernetes(k8s),同时还具有VM的安全优势。 阅读全文
posted @ 2020-01-10 10:26 Mr.peter 阅读(275) 评论(0) 推荐(0) 编辑
摘要:go为什么出现?毫无疑问是为了解决某个问题,什么问题?现有的编程语言无法满足计算机发展的需要了。 21世纪C语言,go可以看作是C的重生,为多核并行计算而生。 完全开源的编程语言,因为它使用 BSD 授权许可,所以任何人都可以进行商业软件的开发而不需要支付任何费用。 GO语言的优势: 简化问题,易于 阅读全文
posted @ 2020-01-09 18:14 Mr.peter 阅读(181) 评论(0) 推荐(0) 编辑
摘要:Google,IBM,Lyft发起的开源项目。2017年推出,2018年7月发布1.0 基于sidecar模式 ,分为数据层和控制层 云原生时代,Istio使您可以连接,保护,控制和观察服务。当整体应用程序向分布式微服务架构过渡时,Istio解决了开发人员和运营商面临的挑战。 istio出现的根本原 阅读全文
posted @ 2020-01-08 17:23 Mr.peter 阅读(993) 评论(0) 推荐(0) 编辑
摘要:go语言与区块链 阅读全文
posted @ 2020-01-08 17:19 Mr.peter 阅读(153) 评论(0) 推荐(0) 编辑
摘要:jenkins是一款基于java的开源的用于软件持续集成的工具。 使用思路:在jenkins软件上添加git仓库的地址,就可以构建用于部署或测试的软件版本。使用过程中经常使用到ssh达到无密码快速构建。 阅读全文
posted @ 2020-01-08 16:50 Mr.peter 阅读(315) 评论(0) 推荐(0) 编辑
摘要:概念普及 ci (Continuous integration) 持续集成 cd(Continuous Delivery)持续交付 cd (Continuous Deployment) 持续部署 CICD一般流程 一般中等规模的互联网公司都会有四套环境: 开发(dev) 测试(test ) 预生产( 阅读全文
posted @ 2020-01-08 16:46 Mr.peter 阅读(1387) 评论(0) 推荐(0) 编辑
摘要:devops一般是大公司用的,小公司的开发人员身兼数职,往往开发运维一个人干了,这就是最早的devops,就是开发和运维的融合,减少不必要的沟通,降低沟通成本。 dev代表开发,ops代表运维。分别对应Development和Operations这两个英文单词。 这个东西能发展起来的根本原因在于软件 阅读全文
posted @ 2020-01-07 18:05 Mr.peter 阅读(671) 评论(0) 推荐(0) 编辑
摘要:Go 语言支持并发,我们只需要通过 go 关键字来开启 goroutine 即可。 goroutine 是轻量级线程,goroutine 的调度是由 Golang 运行时进行管理的。 goroutine 语法格式: 阅读全文
posted @ 2020-01-02 17:58 Mr.peter 阅读(160) 评论(0) 推荐(0) 编辑
摘要:经过代码追踪和打印验证,问题在于:config传入的值是字符串, 所以解析的时候$config为空 解析出来的是默认的数据库配置。 解决办法:配置文件中采用数组的配置方式 阅读全文
posted @ 2020-01-02 14:45 Mr.peter 阅读(2596) 评论(0) 推荐(0) 编辑