容器

Kubernetes-Docker集群管理基础

為{幸葍}努か 提交于 2020-01-10 10:00:04
Kubernetes-Docker集群管理 Kubernetes介绍 Kubernetes是一个开源的Docker容器编排系统,Kubernetes简称K8S。 调度计算集群的节点,动态管理上面的作业 通过使用[labels]和[pods]的概念,将应用按逻辑单元进行分组 K8S用于容器应用程序的部署,扩展和管理 K8S提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等一系列功能 Kubernetes目标是让部署容器化应运简单高效 官方网站:http://www.kubernetes.io Kubernetes特性 自我修复 在节点故障时重新启动失败的容器,替换和重新部署,保证预测的副本数量;杀死健康检查失败的容器,并且在未准备好之前不会处理客户端请求,确保线上服务不中断。 弹性伸缩 使用命令、UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源,以最小成本运行服务 自动部署和回滚 K8S采用滚动更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改,确保升级不受影响业务 服务发现和负载均衡 K8S为多个容器提供一个统一的访问入口(内部IP地址和UI个DNS地址),并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题 机密和配置管理 管理机密数据和应用程序配置

自定义镜像与仓库

瘦欲@ 提交于 2020-01-10 07:16:08
1自定义镜像与仓库 1.1 docker commit 使用镜像启动容器,在该容器上修改 另存为一个新镜像 docker run -it docker.io/centos 修改 (增删改数控.安装软件.修改配置文件等) docker ps docker commit (id号) docker.io/myos:latestARCHITECTURE 1.2dockerfile FROM :基础镜像 MAINTAINER:镜像创建者信息 EXPOSE:开发的端口 ENV:设置变量 ADD:复制文件到镜像 RUN:制作镜像时执行的命令,可以有多个 WORKDIR:定义容器默认工作目录 CMD:容器启动时执行的命令,仅可以有一条CMD 1.3 安装私有仓库 1.4自定义私有仓库 1.4 自定义私有仓库 2持久化存储 2.1存储卷 2.11卷的概念 docker容器不保存任何数据 重要的数据请使用外部卷存储(数据持久化) 容器可以挂载真实机目录或共享存储为卷 2.12 将真实机目录挂载到容器中提供持久化存储 目录不存在就自动创建 目录存在就直接覆盖掉 docker run -v /真机目录:/容器目录 -it docker.io/centos bash 2.2共享存储基本概念 3.docker 创建网桥 docker network create --subnet = 10.10.10.0

pod的俩中钩子

不打扰是莪最后的温柔 提交于 2020-01-10 03:41:15
PodHook Pod Hook 是由 kubelet 发起的,当容器中的进程启动前或者容器中的进程终止之前运行,这是包含在容器的生命周期之中。我们可以同时为 Pod 中的所有容器都配置 hook。 Kubernetes 为我们提供了两种钩子函数: PostStart:这个钩子在容器创建后立即执行。但是,并不能保证钩子将在容器ENTRYPOINT之前运行,因为没有参数传递给处理程序。主要用于资源部署、环境准备等。不过需要注意的是如果钩子花费太长时间以至于不能运行或者挂起, 容器将不能达到running状态。 PreStop:这个钩子在容器终止之前立即被调用。它是阻塞的,意味着它是同步的, 所以它必须在删除容器的调用发出之前完成。主要用于优雅关闭应用程序、通知其他系统等。如果钩子在执行期间挂起, Pod阶段将停留在running状态并且永不会达到failed状态。 如果PostStart或者PreStop钩子失败, 它会杀死容器。所以我们应该让钩子函数尽可能的轻量。当然有些情况下,长时间运行命令是合理的, 比如在停止容器之前预先保存状态。 有两种方式来实现上面的钩子函数: Exec - 用于执行一段特定的命令,不过要注意的是该命令消耗的资源会被计入容器。 HTTP - 对容器上的特定的端点执行HTTP请求。 一:使用exec方式实现钩子函数 apiVersion : v1 kind

清晰架构(Clean Architecture)的Go微服务: 程序容器(Application Container)

我只是一个虾纸丫 提交于 2020-01-10 01:02:53
清晰架构(Clean Architecture)的一个理念是隔离程序的框架,使框架不会接管你的应用程序,而是由你决定何时何地使用它们。在本程序中,我特意不在开始时使用任何框架,因此我可以更好地控制程序结构。只有在整个程序结构布局完成之后,我才会考虑用某些库替换本程序的某些组件。这样,引入的框架或第三方库的影响就会被正确的依赖关系所隔离。目前,除了logger,数据库,gRPC和Protobuf(这是无法避免的)之外,我只使用了两个第三方库 ozzo-validation ¹和 YAML ²,而其他所有库都是Go的标准库。 你可以使用本程序作为构建应用程序的基础。你可能会问,那么本框架岂不是要接管整个应用程序吗?是的。但事实是,无论是你自建框架还是引进第三方框架,你都需要一个基本框架作为构建应用程序的基础。该基础需要具有正确的依赖性和可靠的设计,然后你可以决定是否引入其他库。你当然可以自己建立一个框架,但你最终可能会花费大量的时间和精力来完善它。你也可以使用本程序作为起点,而不是构建自己的项目,从而为你节省时间和精力。 程序容器是项目中最复杂的部分,是将应用程序的不同部分粘合在一起的关键组件。本程序的其他部分是直截了当且易于理解的,但这一部分不是。好消息是,一旦你理解了这一部分,那么整个程序就都在掌控之中。 容器包(“container” package)的组成部分:

java容器源码分析(四)——HashMap

情到浓时终转凉″ 提交于 2020-01-09 23:56:20
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本文内容: Hash HashMap概述 HashMap源码分析 Hash表 数据结构中都学过Hash,我们要说的HashMap采用拉链法(数组+链表)实现。数组具有根据下标快速查找的特点,链表动态增加删除元素。 (来源:http://www.cnblogs.com/hzmark/archive/2012/12/24/HashMap.html) 看上图,对于HashMap的内部结构应该是一目了然了。 HashMap概述 HashMap是一个Key-Value容器,应该是使用得最多的map了吧。看继承关系图 HashMap继承了AbstractMap、Map,实现了Cloneable和Serializable HashMap源码分析 看一下HashMap的一些属性 /** * The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /** * The maximum capacity, used if a higher value is implicitly specified * by either of the

C++ STL 之 deque

≡放荡痞女 提交于 2020-01-09 21:08:35
deque 和 vector 的最大差异? 一在于 deque 允许常数时间内对头端进行元素插入和删除操作。 二在于 deque 没有容量的概念,因为它是动态的以分段的连续空间组合而成,随时可以增加一段新的空间并链接起来,换句话说,像 vector 那样“因旧空间不足而重新分配一块更大的空间,然后再复制元素,释放空间”这样的操作不会发生在 deque 身上,也因此deque 没有必要提供所谓的空间保留功能。 特性总结:  双端插入和删除元素效率较高.  指定位置插入也会导致数据元素移动,降低效率.  可随机存取,效率高. 经验之谈 : deque 是分段连续的内存空间,通过中控器维持一种连续内存空间的状态,其实现复杂性要大于 vector queue stack 等容器,其迭代器的实现也更加复杂,在需要对deque 容器元素进行排序的时候,建议先将 deque 容器中数据数据元素拷贝到 vector 容器中,对 vector 进行排序,然后再将排序完成的数据拷贝回 deque 容器。 1 #include <iostream> 2 #include <deque> 3 using namespace std; 4 5 void PrintDeque(deque<int>& d) 6 { 7 for (deque<int>::iterator it = d.begin();

DOCKER 常见命令

核能气质少年 提交于 2020-01-09 14:11:30
DOCKER 常见命令行 初学者在学习 Docker 的时候容易弄混镜像和容器,这里我把镜像和容器的区别整理了一下,列出了常用的命令行。镜像相当于压缩包,容器相当于压缩包解压得到的软件。 删除所有不在运行的容器 有时候我们在用 docker ps -a 查看所有容器时候会发现很多停掉的容器,一个一个删除很麻烦,下面的命令可以删除所有状态为 Exited 的 docker 容器 docker rm `docker ps - a | grep Exited | awk '{print $1}' ` 删除名称或标签为none的镜像 docker rmi - f `docker images | grep '<none>' | awk '{print $3}' 来源: CSDN 作者: yaos829 链接: https://blog.csdn.net/yaos829/article/details/103904267

背景图像坐标定位

梦想与她 提交于 2020-01-09 02:31:59
实际上,如果没有发明image标签,可能就没有网页设计师这门职业。 然而对image 标签的滥用可能导致纯修饰性的图像把页面弄乱。好在CSS 使我们能够在页面上显示图像,而不需要让图像成为标记的一部分。实现方法是将图像作为背景添加到现有的元素中。 背景图像基础: 默认情况下,浏览器垂直和水平的重复显示背景图像,让图像平铺整个页面。 渐变效果: 目前渐变非常时髦,你可能希望在页面上应用垂直渐变,为此需要创建一个很高但是很窄的渐变图像,然后将这个图像应用于页面的主体,并让他水平平铺。 因为这个渐变图像的高度是固定的,所以如果页面内容的长度超过了图像高度,那么渐变会突然停止,解决方法是,再添加一个背景色,因为 背景图像总是出现在背景颜色的上面 ,所以当图像结束时,背景颜色就会显示出来。 小技巧: 设置一个空的DIV,然后设置其ID,将DIV的尺寸设置为与图像相同,图像作为其背景应用并指定不重复。 设置背景图像的位置 (属性名称:background-position ) ,例如:background-position:left center;(使用 关键字 )。还可以使用像素或百分比等 单位 设置图像位置。但是注意,使用像素设置背景位置,图像左上角到元素左上角的距离为指定的像素数。但是,使用百分比,并不是对背景图像的左上角进行定位,而是使用图像上的一个对应点,所以

spring在web项目中ApplicationContext容器的实例化

烈酒焚心 提交于 2020-01-09 01:29:43
spring IoC设计的核心是Bean容器,BeanFactory采用了java的工厂模式,通过从XML配置文件中读取JavaBean的定义,来实现JavaBean的创建、配置和管理。所以BeanFactory可以成为IoC容器。而ApplicationContext扩展了BeanFactory容器并添加了对国际化、资源访问、事件传播等方面有良好的支持可以应用在java App和java Web中。在java项目中通过ClassPathXMLApplicationContext类手工实例化ApplicationContext容器十分合适。但是对于web项目就不行了,web项目的启动是由相应的web服务器负责的。因此,在web项目中ApplicationContext容器的实例化工作最好由web服务器来完成。 spring提供两种方式 (1)基于ContextLoaderListener实现。 web.xml中添加: <!--指定spring配置文件的位置,多个配置文件以逗号分隔--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-