
docker
文章平均质量分 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.youkuaiyun.com/liyingke112/article/details/76685794概念在云原生应用的体系里,有下面两组近义词;第一组是无状态(s原创 2017-08-08 16:12:07 · 3220 阅读 · 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 · 975 阅读 · 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 · 751 阅读 · 0 评论 -
kubernetes--应用程序健康检查
K8S的应用程序健康检查分为livenessProbe和readinessProbe,两者相似,但两者存在着一些区别。livenessProbe在服务运行过程中检查应用程序是否运行正常,不正常将杀掉进程;而readness Probe是用于检测应用程序启动完成后是否准备好对外提供服务,不正常继续检测,直到返回成功为止。原创 2017-08-24 16:16:13 · 5265 阅读 · 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 · 4901 阅读 · 0 评论 -
kubernetes-kubectl命令说明
kubectlkubectl controls the K8S cluster manager. Find more information at https://github.com/K8S/K8S.Basic Commands (Beginner): create Create a resource by filename or stdin expose原创 2017-08-22 18:07:10 · 758 阅读 · 0 评论 -
kubernetes资源对象--ResourceQuotas
概念Resource Quotas(资源配额,简称quota)是对namespace进行资源配额,限制资源使用的一种策略。 K8S是一个多用户架构,当多用户或者团队共享一个K8S系统时,SA使用quota防止用户(基于namespace的)的资源抢占,定义好资源分配策略。Quota应用在Namespace上,默认情况下,没有Resource Quota的,需要另外创建Quota,并原创 2017-08-18 14:25:02 · 6835 阅读 · 0 评论 -
kubernetes--Init Container
概念Init Container就是做初始化工作的容器。可以有一个或多个,如果有多个,这些 Init Container 按照定义的顺序依次执行,只有所有的InitContainer 执行完后,主容器才启动。由于一个Pod里的存储卷是共享的,所以 Init Container 里产生的数据可以被主容器使用到。Init Container可以在多种K8S资源里被使用到如Deployment、原创 2017-08-15 14:57:52 · 3166 阅读 · 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 · 10101 阅读 · 0 评论 -
kubernetes资源对象--deployment
Deployment(中文意思为部署、调度)提供了一种更加简单的更新RC和Pod的机制,K8S版本1.2实现的。通过在Deployment中描述所期望的集群状态,Deployment Controller会将现在的集群状态在一个可控的速度下逐步更新成所期望的集群状态。Deployment主要职责同样是为了保证pod的数量和健康,90%的功能与RC完全一样,可以看做新一代的RC。功能Depl原创 2017-08-01 17:33:25 · 10494 阅读 · 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 · 11500 阅读 · 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 · 995 阅读 · 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 · 2636 阅读 · 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 · 1978 阅读 · 0 评论 -
kubernetes资源对象--Service
为了适应快速的业务需求,微服务架构已经逐渐成为主流,微服务架构的应用需要有非常好的服务编排支持。K8S中的核心要素Service便提供了一套简化的服务代理和发现机制,天然适应微服务架构。原创 2017-08-02 14:13:23 · 1040 阅读 · 0 评论 -
kubernetes资源对象--pod和job
podPod是K8S的最小操作单元,一个Pod可以由一个或多个容器组成;整个K8S系统都是围绕着Pod展开的,比如如何部署运行Pod、如何保证Pod的数量、如何访问Pod等。特点Pod是能够被创建、调度和管理的最小单元;每个Pod都有一个独立的IP;原创 2017-08-01 18:03:39 · 9224 阅读 · 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 · 6364 阅读 · 0 评论 -
kubernetes创建资源对象yaml文件例子--pod
kubernetes创建pod的yaml文件参数说明原创 2017-07-26 17:53:09 · 18807 阅读 · 0 评论 -
cAdvisor、InfluxDB、Grafana搭建Docker1.12性能监控平台
通过cadvisor+influxdb+grafana三者有机结合,打造跨主机容器监控。优点1、跨主机监控,可扩展2、容器自发现3、历史数据长期保存4、自定义配置程度高5、采集间隔很短,达到秒级6、多种方式告警缺点1、不能自动隐藏已停止的容器2、grafana会展现所有的数据,导致展示长时间的数据时,各个数据点重叠。组件数据采集–cAdvisorcAdvisor为Docker容器用户原创 2017-07-10 14:54:16 · 2857 阅读 · 0 评论 -
etcd集群日常维护
配置文件和启动参数说明命令行 | 配置文件 | 说明data-dir | ETCD_DATA_DIR | 指定节点的数据存储目录,包括节点ID,集群ID,集群初始化配置,Snapshot文件,若原创 2017-09-27 16:26:33 · 6118 阅读 · 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 · 778 阅读 · 0 评论 -
kubernetes--pod的生命周期管理
下文基于kubernetes 1.5.2版本编写lifecycle概念创建资源对象时,可以使用lifecycle来管理容器在运行前和关闭前的一些动作。lifecycle有两种回调函数:PostStart:容器创建成功后,运行前的任务,用于资源部署、环境准备等。PreStop:在容器被终止前的任务,用于优雅关闭应用程序、通知其他系统等等。例1、部署代码以下原创 2017-09-28 15:18:18 · 7907 阅读 · 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 · 48886 阅读 · 0 评论 -
kubernetes1.5.2集群部署过程--安全模式
使用https安全模式部署kubernetes集群,能保证集群通讯安全、有效限制非授权用户访问。但部署比非安全模式复杂的多。本文为etcd、kubernetes集群中各个组件配置证书认证,所有组件通讯之间使用https通讯。证书部署cfsslCFSSL是开源的PKI工具箱,可以创建一个轻松获取和操作证书的内部CA。该工具具有运行一个CA所需的全部功能。运行CA需要一原创 2017-09-01 19:08:32 · 989 阅读 · 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 · 1107 阅读 · 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 · 5920 阅读 · 0 评论 -
kubernetes资源对象--持久化存储Persistent Volume和Persistent Volume Claim
概念存储管理跟计算管理是两个不同的问题。理解每个存储系统是一件复杂的事情,特别是对于普通用户来说,有时并不需要关心各种存储实现,只希望能够安全可靠地存储数据。为了简化对存储调度,K8S对存储的供应和使用做了抽象,以API形式提供给管理员和用户使用。要完成这一任务,引入了两个新的API资源:Persistent Volume(持久卷,以下简称PV)和Persistent Volume Cla原创 2017-08-07 16:46:46 · 7254 阅读 · 0 评论 -
kubernetes将外部服务映射为内部服务
在实际应用中,一般不会把mysql这种重IO、有状态的应用直接放入k8s中,而是使用专用的服务器来独立部署。而像web这种无状态应用依然会运行在k8s当中,这时web服务器要连接k8s管理之外的数据库,有两种方式:一是直接连接数据库所在物理服务器IP,另一种方式就是借助k8s的Endpoints直接将外部服务器映射为k8s内部的一个服务。下面这个例子就是展示Endpoints将外部服务映射为k8s内部服务的例子。转载 2017-07-27 15:57:28 · 7459 阅读 · 0 评论 -
Kubernetes:理解资源的概念
不知你是否已清楚,Kubernetes 是支持 Docker 和 rkt(当前是这两种)的容器调度系统。除了下面这些优美的特性,比如简易部署,配置管理,服务发现,等等,它还允许我们以一种更高效的方式来管理计算资源。本文将阐述如下问题,Kubernetes 资源模型如何工作,为什么你应该总是限制容器资源,以及如何才能正确做到。资源管理的必要性Kubernetes 出现之前,运行容器的普遍方式转载 2017-08-12 21:26:15 · 775 阅读 · 0 评论 -
在K8s中创建StatefulSet
在K8s中创建StatefulSet遇到的问题:使用Deployment创建的Pod是无状态的,当挂在Volume之后,如果该Pod挂了,Replication Controller会再run一个来保证可用性,但是由于是无状态的,Pod挂了的时候与之前的Volume的关系就已经断开了,新起来的Pod无法找到之前的Pod。但是对于用户而言,他们对底层的Pod挂了没有感知,但是当Pod挂了之后转载 2017-08-04 17:12:49 · 1944 阅读 · 0 评论 -
StatefulSet: Kubernetes 中对有状态应用的运行和伸缩
在最新发布的 Kubernetes 1.5 我们将过去的 PetSet 功能升级到了 Beta 版本,并重新命名为StatefulSet。除了依照社区民意改了名字之外,这一 API 对象并没有太大变化,不过我们在向集合里部署 Pod 的过程中加入了“每索引最多一个”的语义。有了顺序部署、顺序终结、唯一网络名称以及持久稳定的存储,我们认为,对于大量的有状态容器化负载,我们已经具备了一定的支持能力转载 2017-08-04 15:12:52 · 2307 阅读 · 0 评论 -
为什么我不使用Kubernetes的Ingress
为什么我不使用Kubernetes的Ingress 很不幸,据我所知Kubernetes的文档不是很完美,这就是为什么有很多同学在使用它的时候会遇到很多的坑,Ingress这个组件就是这些坑中的一个。那什么是ingress呢?非常简单!Ingress就是依靠hostname或者path为不同的service提供了一个流量的代理(译者注:ingress就是一个工作在7层的负载转载 2017-08-10 18:12:42 · 2553 阅读 · 0 评论 -
Docker容器的自动化监控实现
近年来容器技术不断成熟并得到应用。Docker作为容器技术的一个代表,目前也在快速发展中,基于 Docker的各种应用也正在普及,与此同时 Docker对传统的运维体系也带来了冲击。我们在建设运维平台的过程中,也需要去面对和解决容器相关的问题。Docker的运维是一个体系,而监控系统作为运维体系中重要组成部分,在 Docker运维过程中需要重点考虑。本文介绍了一种针对 Docker容器的自动化转载 2017-08-03 09:20:45 · 658 阅读 · 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 · 975 阅读 · 0 评论 -
Kubernetes服务之“运行单实例的有状态服务”
Kubernetes服务之“运行单实例的有状态服务”,kubernetes实例目标 在你的环境中创建一个PV 创建一个MySQl的Deployment 在集群中以DNS名称的方式,将MySQL暴露给其他的pod开始之前 你需要一个Kubernetes集群,一个可以连接到集群的kubectl命令行工具。如果你没有集群,你可以使用Minikube来创建。 我们转载 2017-08-01 16:54:13 · 860 阅读 · 1 评论 -
etcd:从应用场景到实现原理的全方位解读
随着CoreOS和Kubernetes等项目在开源社区日益火热,它们项目中都用到的etcd组件作为一个高可用强一致性的服务发现存储仓库,渐 渐为开发人员所关注。在云计算时代,如何让服务快速透明地接入到计算集群中,如何让共享配置信息快速被集群中的所有机器发现,更为重要的是,如何构建这样 一套高可用、安全、易于部署以及响应快速的服务集群,已经成为了迫切需要解决的问题。etcd为解决这类问题带来了福音,转载 2017-07-11 15:09:06 · 1122 阅读 · 0 评论 -
docker web-GUI DockerUI和Shipyard对比
DockerUI和Shipyard对比相似基于Docker API,提供等同Docker命令行的大部分功能,支持container管理,image管理。web页面查看和管理容器和镜像,均能批量管理容器的生命周期管理差异dockerui能修改容器配置 dockerui能管理和新增网络 dockerui能新增volume Shipyard能创建容器 Shipyard能拉取镜像 Ship原创 2017-07-10 16:43:34 · 2854 阅读 · 0 评论 -
15 个 Docker 技巧和提示
CLI(Command Line Interface,命令行)好的 docker ps 输出将 docker ps 输出通过管道重定向到 less -S,避免折行:docker ps -a | less -S跟随 logsdocker logs 默认情况下不会观察日志,除非你使用 -f 参数:docker logs -f转载 2017-06-29 17:30:50 · 1254 阅读 · 0 评论 -
Kubernetes存储之Persistent Volumes简介
Kubernetes存储之Persistent Volumes简介简介 管理存储和管理计算有着明显的不同。PersistentVolume子系统给用户和管理员提供了一套API,从而抽象出存储是如何提供和消耗的细节。在这里,我们介绍两种新的API资源:PersistentVolume(简称PV)和PersistentVolumeClaim(简称PVC)。 PersistentVo转载 2017-08-07 14:49:04 · 776 阅读 · 0 评论 -
kubernetes资源对象--Volume
在Docker的设计实现中,容器中的数据是临时的,即当容器被销毁时,其中的数据将会丢失。如果需要持久化数据,需要使用Docker数据卷挂载宿主机上的文件或者目录到容器中。在K8S中,当Pod重建的时候,数据是会丢失的,K8S也是通过数据卷挂载来提供Pod数据的持久化的。K8S数据卷是对Docker数据卷的扩展,K8S数据卷是Pod级别的,可以用来实现Pod中容器的文件共享。支持的类型Emp转载 2017-08-02 15:05:42 · 3026 阅读 · 0 评论