kubernetes
文章平均质量分 93
lykops
开发运维项目有
lykchat:https://github.com/lykops/lykchat/
lykops:https://github.com/lykops/lykops/
展开
-
kubernetes资源对象--PetSets/StatefulSet
PetSet首次在K8S1.4版本中,在1.5更名为StatefulSet。除了改了名字之外,这一API对象并没有太大变化。注意:以下内容的验证环境为CentOS7、K8S版本1.5.2,并部署SkyDNS。http://blog.csdn.net/liyingke112/article/details/76685794概念在云原生应用的体系里,有下面两组近义词;第一组是无状态(s原创 2017-08-08 16:12:07 · 3153 阅读 · 0 评论 -
kubernetes1.5.2--部署dashboard服务
使用http方式访问api server的部署cat dashboard-controller.yaml apiVersion: extensions/v1beta1kind: Deploymentmetadata: labels: k8s-app: kubernetes-dashboard kubernetes.io/cluster-service: "true"原创 2017-09-01 20:04:56 · 2598 阅读 · 0 评论 -
kubernetes1.5.2--部署DNS服务
在kubernetes1.2之前,采用skydns+kube2dns+etcd的方式来部署dns。而从1.3开始,则部署方式有了一点儿变化,将skydns和kube2dns封装到了一个容器镜像中,放弃了etcd,而将dns解析直接放入到了内存之中,同时引入了dnsmasq,进一步利用其缓存。使用DaemonSet方式部署,在每台宿主机上均有一个DNS服务。使用http方式访问api s原创 2017-09-01 19:37:12 · 938 阅读 · 0 评论 -
kubernetes1.5.2集群部署过程--非安全模式
运行环境宿主机:CentOS7 7.3.1611关闭selinuxetcd 3.1.9flunnel 0.7.1docker 1.12.6kubernetes 1.5.2安装软件yum install etcd kubernetes kubernetes-client kubernetes-master kubernetes-node flannel docker dock原创 2017-09-01 17:02:40 · 729 阅读 · 0 评论 -
kubernetes--应用程序健康检查
K8S的应用程序健康检查分为livenessProbe和readinessProbe,两者相似,但两者存在着一些区别。livenessProbe在服务运行过程中检查应用程序是否运行正常,不正常将杀掉进程;而readness Probe是用于检测应用程序启动完成后是否准备好对外提供服务,不正常继续检测,直到返回成功为止。原创 2017-08-24 16:16:13 · 5216 阅读 · 0 评论 -
kubernetes--优雅删除资源对象
当用户请求删除含有pod的资源对象时(如RC、deployment等),K8S为了让应用程序优雅关闭(即让应用程序完成正在处理的请求后,再关闭软件),K8S提供两种信息通知:1)、默认:K8S通知node执行docker stop命令,docker会先向容器中PID为1的进程发送系统信号SIGTERM,然后等待容器中的应用程序终止执行,如果等待时间达到设定的超时时间,或者默认超时时间(30s),会继续发送SIGKILL的系统信号强行kill掉进程。2)、使用pod生命周期(利用PreStop回调函数),原创 2017-08-23 15:51:09 · 4856 阅读 · 0 评论 -
kubernetes资源对象--ResourceQuotas
概念Resource Quotas(资源配额,简称quota)是对namespace进行资源配额,限制资源使用的一种策略。 K8S是一个多用户架构,当多用户或者团队共享一个K8S系统时,SA使用quota防止用户(基于namespace的)的资源抢占,定义好资源分配策略。Quota应用在Namespace上,默认情况下,没有Resource Quota的,需要另外创建Quota,并原创 2017-08-18 14:25:02 · 6772 阅读 · 0 评论 -
kubernetes--Init Container
概念Init Container就是做初始化工作的容器。可以有一个或多个,如果有多个,这些 Init Container 按照定义的顺序依次执行,只有所有的InitContainer 执行完后,主容器才启动。由于一个Pod里的存储卷是共享的,所以 Init Container 里产生的数据可以被主容器使用到。Init Container可以在多种K8S资源里被使用到如Deployment、原创 2017-08-15 14:57:52 · 3123 阅读 · 0 评论 -
让外部网络访问K8S service的四种方式
kube-proxy+ClusterIPkubernetes版本大于或者等于1.2时,配置:修改master的/etc/kubernetes/proxy,把KUBE_PROXY_ARGS=”“改为KUBE_PROXY_ARGS=”–proxy-mode=userspace”重启kube-proxy服务在核心路由设备或者源主机上添加一条路由,访问cluster IP段的路由指向到ma原创 2017-09-21 15:45:46 · 10037 阅读 · 0 评论 -
kubernetes1.5.2--部署node-problem-detector服务
node经常会遇到以下问题:硬件问题: cpu 内存 磁盘内核问题: 内核死锁, 文件系统损坏容器问题: 守护进程无响应K8S集群管理对node的健康状态是无法感知的,pod依旧会调度到有问题的node上,通过DaemonSet部署node-problem-detector,向apiserver上报node的状态信息,使node的健康状态对上游管理可见,pod不会再调度到有异常的原创 2017-09-05 18:06:21 · 1937 阅读 · 0 评论 -
kubernetes1.5.2--部署监控服务
Heapster是kubernetes集群监控工具。在1.2的时候,kubernetes的监控需要在node节点上运行cAdvisor作为agent收集本机和容器的资源数据,包括cpu、内存、网络、文件系统等。在新版的kubernetes中,cAdvisor被集成到kubelet中。通过netstat可以查看到kubelet新开了一个4194的端口,这就是cAdvisor监听的端口,现在我们然后可原创 2017-09-01 20:34:44 · 1074 阅读 · 0 评论 -
kubernetes1.5.2集群部署过程--安全模式
使用https安全模式部署kubernetes集群,能保证集群通讯安全、有效限制非授权用户访问。但部署比非安全模式复杂的多。本文为etcd、kubernetes集群中各个组件配置证书认证,所有组件通讯之间使用https通讯。证书部署cfsslCFSSL是开源的PKI工具箱,可以创建一个轻松获取和操作证书的内部CA。该工具具有运行一个CA所需的全部功能。运行CA需要一原创 2017-09-01 19:08:32 · 957 阅读 · 0 评论 -
kubernetes资源对象--Service
为了适应快速的业务需求,微服务架构已经逐渐成为主流,微服务架构的应用需要有非常好的服务编排支持。K8S中的核心要素Service便提供了一套简化的服务代理和发现机制,天然适应微服务架构。原创 2017-08-02 14:13:23 · 1012 阅读 · 0 评论 -
kubernetes资源对象--pod和job
podPod是K8S的最小操作单元,一个Pod可以由一个或多个容器组成;整个K8S系统都是围绕着Pod展开的,比如如何部署运行Pod、如何保证Pod的数量、如何访问Pod等。特点Pod是能够被创建、调度和管理的最小单元;每个Pod都有一个独立的IP;原创 2017-08-01 18:03:39 · 9101 阅读 · 0 评论 -
kubernetes创建资源对象yaml文件例子--rc
apiVersion: v1 #指定api版本,此值必须在kubectl apiversion中kind: ReplicationController #指定创建资源的角色/类型metadata: #资源的元数据/属性 name: test-rc #资源的名字,在同一个namespace中必须唯一 labels: #设定资源的标签 software: apache pr原创 2017-08-01 14:28:41 · 6315 阅读 · 0 评论 -
kubernetes创建资源对象yaml文件例子--pod
kubernetes创建pod的yaml文件参数说明原创 2017-07-26 17:53:09 · 18720 阅读 · 0 评论 -
etcd集群日常维护
配置文件和启动参数说明命令行 | 配置文件 | 说明data-dir | ETCD_DATA_DIR | 指定节点的数据存储目录,包括节点ID,集群ID,集群初始化配置,Snapshot文件,若原创 2017-09-27 16:26:33 · 6060 阅读 · 0 评论 -
kubernetes 实用 api list
https://192.168.20.128:6443/api/v1/pods原文来自https://segmentfault.com/a/1190000002937665收集整理一些可能较常用的api,结合kubernetes的自动化系统 以及 监控可能会用到。注:涉及到POST方法中的json为发送的数据体。get nodecurl -i转载 2017-09-12 15:45:19 · 757 阅读 · 0 评论 -
kubernetes--pod的生命周期管理
下文基于kubernetes 1.5.2版本编写lifecycle概念创建资源对象时,可以使用lifecycle来管理容器在运行前和关闭前的一些动作。lifecycle有两种回调函数:PostStart:容器创建成功后,运行前的任务,用于资源部署、环境准备等。PreStop:在容器被终止前的任务,用于优雅关闭应用程序、通知其他系统等等。例1、部署代码以下原创 2017-09-28 15:18:18 · 7846 阅读 · 0 评论 -
使用kube-proxy让外部网络访问K8S service的ClusterIP
本文基于kubernetes 1.5.2版本编写配置方式kubernetes版本大于或者等于1.2时,外部网络(即非K8S集群内的网络)访问cluster IP的办法是: 修改master的/etc/kubernetes/proxy,把KUBE_PROXY_ARGS=”“改为KUBE_PROXY_ARGS=”–proxy-mode=userspace” 重启kube-proxy服务 在核心路由原创 2017-07-24 16:27:34 · 48710 阅读 · 0 评论 -
kubernetes资源对象--deployment
Deployment(中文意思为部署、调度)提供了一种更加简单的更新RC和Pod的机制,K8S版本1.2实现的。通过在Deployment中描述所期望的集群状态,Deployment Controller会将现在的集群状态在一个可控的速度下逐步更新成所期望的集群状态。Deployment主要职责同样是为了保证pod的数量和健康,90%的功能与RC完全一样,可以看做新一代的RC。功能Depl原创 2017-08-01 17:33:25 · 10450 阅读 · 0 评论 -
kubernetes资源对象--RC和RS
Replication Controller(RC) RC是K8S中的另一个核心概念,应用托管在K8S后,K8S需要保证应用能够持续运行,这是RC的工作内容。主要功能确保pod数量:RC用来管理正常运行Pod数量,一个RC可以由一个或多个Pod组成,在RC被创建后,系统会根据定义好的副本数来创建Pod数量。在运行过程中,如果Pod数量小于定义的,就会重启停止的或重新分配Pod,反原创 2017-08-01 17:54:05 · 11423 阅读 · 0 评论 -
kubernetes资源对象--secret和Service Account
secret概念secret对象类型主要目的是保存和处理敏感信息/私密数据,比如密码,OAuth tokens,ssh keys等信息。将这些信息放在secret对象中比 直接放在pod或docker image中更安全,也更方便使用。一个已经创建好的secrets对象有两种方式被pod对象使用,其一,在container中的volume对象里以file的形式被使用,其二,在pull原创 2017-08-02 16:39:41 · 965 阅读 · 0 评论 -
kubernetes资源对象--Volume
在Docker的设计实现中,容器中的数据是临时的,即当容器被销毁时,其中的数据将会丢失。如果需要持久化数据,需要使用Docker数据卷挂载宿主机上的文件或者目录到容器中。在K8S中,当Pod重建的时候,数据是会丢失的,K8S也是通过数据卷挂载来提供Pod数据的持久化的。K8S数据卷是对Docker数据卷的扩展,K8S数据卷是Pod级别的,可以用来实现Pod中容器的文件共享。支持的类型Emp转载 2017-08-02 15:05:42 · 2985 阅读 · 0 评论 -
Kubernetes存储之Persistent Volumes简介
Kubernetes存储之Persistent Volumes简介简介 管理存储和管理计算有着明显的不同。PersistentVolume子系统给用户和管理员提供了一套API,从而抽象出存储是如何提供和消耗的细节。在这里,我们介绍两种新的API资源:PersistentVolume(简称PV)和PersistentVolumeClaim(简称PVC)。 PersistentVo转载 2017-08-07 14:49:04 · 744 阅读 · 0 评论 -
kubernetes将外部服务映射为内部服务
在实际应用中,一般不会把mysql这种重IO、有状态的应用直接放入k8s中,而是使用专用的服务器来独立部署。而像web这种无状态应用依然会运行在k8s当中,这时web服务器要连接k8s管理之外的数据库,有两种方式:一是直接连接数据库所在物理服务器IP,另一种方式就是借助k8s的Endpoints直接将外部服务器映射为k8s内部的一个服务。下面这个例子就是展示Endpoints将外部服务映射为k8s内部服务的例子。转载 2017-07-27 15:57:28 · 7405 阅读 · 0 评论 -
Kubernetes:理解资源的概念
不知你是否已清楚,Kubernetes 是支持 Docker 和 rkt(当前是这两种)的容器调度系统。除了下面这些优美的特性,比如简易部署,配置管理,服务发现,等等,它还允许我们以一种更高效的方式来管理计算资源。本文将阐述如下问题,Kubernetes 资源模型如何工作,为什么你应该总是限制容器资源,以及如何才能正确做到。资源管理的必要性Kubernetes 出现之前,运行容器的普遍方式转载 2017-08-12 21:26:15 · 750 阅读 · 0 评论 -
在K8s中创建StatefulSet
在K8s中创建StatefulSet遇到的问题:使用Deployment创建的Pod是无状态的,当挂在Volume之后,如果该Pod挂了,Replication Controller会再run一个来保证可用性,但是由于是无状态的,Pod挂了的时候与之前的Volume的关系就已经断开了,新起来的Pod无法找到之前的Pod。但是对于用户而言,他们对底层的Pod挂了没有感知,但是当Pod挂了之后转载 2017-08-04 17:12:49 · 1905 阅读 · 0 评论 -
StatefulSet: Kubernetes 中对有状态应用的运行和伸缩
在最新发布的 Kubernetes 1.5 我们将过去的 PetSet 功能升级到了 Beta 版本,并重新命名为StatefulSet。除了依照社区民意改了名字之外,这一 API 对象并没有太大变化,不过我们在向集合里部署 Pod 的过程中加入了“每索引最多一个”的语义。有了顺序部署、顺序终结、唯一网络名称以及持久稳定的存储,我们认为,对于大量的有状态容器化负载,我们已经具备了一定的支持能力转载 2017-08-04 15:12:52 · 2265 阅读 · 0 评论 -
为什么我不使用Kubernetes的Ingress
为什么我不使用Kubernetes的Ingress 很不幸,据我所知Kubernetes的文档不是很完美,这就是为什么有很多同学在使用它的时候会遇到很多的坑,Ingress这个组件就是这些坑中的一个。那什么是ingress呢?非常简单!Ingress就是依靠hostname或者path为不同的service提供了一个流量的代理(译者注:ingress就是一个工作在7层的负载转载 2017-08-10 18:12:42 · 2521 阅读 · 0 评论 -
Kubernetes核心概念总结
1、基础架构1.1 Master Master节点上面主要由四个模块组成:APIServer、scheduler、controller manager、etcd。 APIServer。APIServer负责对外提供RESTful的Kubernetes API服务,它是系统管理指令的统一入口,任何对资源进行增删改查的操作都要交给APIServer处理后再提交给etcd。如架构转载 2017-07-24 17:54:34 · 947 阅读 · 0 评论 -
kubernetes API Server安全
用户访问API Server(以下简称Server),K8S的安全检查步骤:认证和授权。认证解决用户是谁的问题,就是验证用户名密码;授权解决用户能做什么的问题,就是检查该用户是否拥有权限访问请求的资源。通过合理的权限管理,能够保证系统的安全可靠。网络Server通过本地端口(Localhost Port)和安全端口(Secure Port)对外提供API服务,其中本地端口是基于转载 2017-09-01 17:37:00 · 1328 阅读 · 0 评论 -
kubernetes社区项目生态概览
原文 http://dockone.io/article/2075 作为容器集群管理技术的最流行的技术,kubernetes,自从2014在github上开源后,已经通过多个项目形成了一个生态,以下是从用户角度对这些项目做一个基本的认知kubernetes主项目,实现了容器集群的调度管理,并以restful接口的形式暴露出来,可以认为是云操作系统的的内核转载 2017-09-13 14:58:59 · 876 阅读 · 0 评论 -
Kubernentes中的身份验证
Kubernentes中的身份验证kubernetes 系统的各组件需要使用 TLS 证书对通信进行加密,本文档使用 CloudFlare 的 PKI 工具集cfssl 来生成 Certificate Authority (CA) 和其它证书;生成的 CA 证书和秘钥文件如下:ca-key.pemca.pemkubernetes-key.pemkubernetes.pemk转载 2017-08-28 15:23:05 · 909 阅读 · 0 评论 -
kubernetes资源对象--DaemonSet
DaemonSet能够让所有(或者特定)的节点运行同一个pod。当节点加入到K8S集群中,pod会被(DaemonSet)调度到该节点上运行,当节点从K8S集群中被移除,被DaemonSet调度的pod会被移除,如果删除DaemonSet,所有跟这个DaemonSet相关的pods都会被删除。在某种程度上,DaemonSet承担了RC的部分功能,它也能保证相关pods持续运行,如果一个DaemonSet的Pod被杀死、停止、或者崩溃,那么DaemonSet将会重新创建一个新的副本在这台计算节点上。原创 2017-08-03 15:56:11 · 5890 阅读 · 0 评论 -
kubernetes资源对象--持久化存储Persistent Volume和Persistent Volume Claim
概念存储管理跟计算管理是两个不同的问题。理解每个存储系统是一件复杂的事情,特别是对于普通用户来说,有时并不需要关心各种存储实现,只希望能够安全可靠地存储数据。为了简化对存储调度,K8S对存储的供应和使用做了抽象,以API形式提供给管理员和用户使用。要完成这一任务,引入了两个新的API资源:Persistent Volume(持久卷,以下简称PV)和Persistent Volume Cla原创 2017-08-07 16:46:46 · 7195 阅读 · 0 评论 -
kubernetes资源对象--Label
Label机制是K8S中一个重要设计,通过Label进行对象弱关联,灵活地分类和选择不同服务或业务,让用户根据自己特定的组织结构以松耦合方式进行服务部署。原创 2017-08-22 16:52:00 · 6949 阅读 · 0 评论 -
kubernetes--资源管理
kubernetes的资源管理分为资源请求(request)和资源限制(limit),资源请求能够保证Pod有足够的资源来运行,而资源限制则是防止某个Pod无限制地使用资源,导致其他Pod崩溃。kubernetes1.5之前的版本只支持CPU和内存这两种资源类型。kubernetes的资源管理有3种方式,分别是单个资源对象的资源管理(以下简称resource)、limitranges、resourcequotas。resource和limitranges可以单独使用,也可以同时使用,而resourceq原创 2017-08-21 17:09:28 · 3011 阅读 · 0 评论 -
kubernetes资源对象--limitranges
概念LimitRange(简称limits)基于namespace的资源管理,包括pod和Container的最小、最大和default、defaultrequests等。一旦创建limits,以后创建资源时,K8S将该limits资源限制条件默认/强制给pod,创建后发现不符合规则,将暂停创建pod。在创建资源时,用户可以为pod自定义资源管理限制,在创建时会去检查和匹配limits值,发现不匹配将在创建时报错。创建后,该pod的资源使用遵守自定义规则,而不会遵守namespace的limit原创 2017-08-15 17:55:16 · 2408 阅读 · 0 评论 -
kubernetes资源对象--ConfigMap
原理很多生产环境中的应用程序配置较为复杂,可能需要多个config文件、命令行参数和环境变量的组合。使用容器部署时,把配置应该从应用程序镜像中解耦出来,以保证镜像的可移植性。尽管Secret允许类似于验证信息和秘钥等信息从应用中解耦出来,但在K8S1.2前并没有为了普通的或者非secret配置而存在的对象。在K8S1.2后引入ConfigMap来处理这种类型的配置数据。ConfigMap是存储通用的原创 2017-08-11 16:18:09 · 7495 阅读 · 0 评论