- 博客(182)
- 收藏
- 关注
原创 kubernetes(9)——ingress
1. ingress概述我们知道service的表现形式为IP:PORT,即工作在第四层传输层(TCP/IP层),那么对于不同的URL地址经常对应用不同的后端服务或者虚拟服务器,这些应用层的转发机制仅通过kubernetes的service机制是无法实现的,这种情况我们可以使用ingress策略定义和一个具体的ingress Controller,两者结合实现一个完整的Ingress 负载均衡,这个负载均衡是基于nginx七层反向代理来实现。k8s 对外暴露服务(service)主要有两种方式:Note
2020-06-26 22:03:40
328
原创 kubernetes(8)——service实现服务发现和负载均衡
1.service是什么?service是kubernetes中最核心的资源对象之一,service和pod之间是通过Label串起来,相同的Service的pod的Label是一样的. 同一个service下的所有pod是通过kube-proxy实现负载均衡.而每个service都会分配一个全局唯一的虚拟ip,也就cluster ip.在该service整个生命周期内,cluster ip保持不变,而在kubernetes中还有一个dns服务,它会把service的name解析为cluster ip。
2020-06-26 21:40:08
2057
原创 kubernetes(7)——控制器(ReplicaSet、Deployment、DaemonSet、job、Cronjob)
1.控制器Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无效,则会重新新建pod的资源。pod分类和控制器类型Pod的分类:自主式Pod:Pod退出后不会被创建控制器管理的Pod:在控制器的生命周期里,始终要维持Pod的副本数目控制器类型:Replication Controller和ReplicaSetDeploymentDaemonSetStatefulSetJobCronJobHPA全称H
2020-06-26 18:32:08
597
原创 kubernetes(6) ——pod的生命周期&探针
1.pod的生命周期Pod 是 kubernetes 系统的基础单元,是由用户创建或部署的最小组件,也是 kubernetes 系统上运行容器化应用的资源对象。Kubernetes 集群中其他资源对象都是为 pod 这个资源对象做支撑来实现 kubernetes 管理应用服务的目的。Pod 可以包含多个容器,应用运行在这些容器里面,同时 Pod 也可以有一个或多个先于应用容器启动的 Init 容器。Init 容器与普通的容器非常像,除了如下两点:它们总是运行到完成。 Init 容器不支持 R
2020-06-25 21:17:20
286
原创 kubernetes(5) ——资源清单配置
1.基本概念理解什么叫资源?k8s中所有的内容都抽象为资源,资源实例化之后,叫做对象。什么是资源清单?在k8s中,一般使用yaml格式的文件来创建符合我们预期期望的pod,这样的yaml文件我们一般称为资源清单创建资源的方法:apiserver 仅接受JSON格式的资源定义;yaml格式提供配置清单,apiserver 可自动将其转为JSON格式,而后再提交;2.资源清单的格式apiVersion: group/apiversion # 如果没有给定group名称,那么默认为croe,
2020-06-17 15:59:52
242
原创 kubernetes(4)——部署问题解决(节点状态为 NotReady)
问题使用kubectl get nodes查看已加入的节点时,出现了Status为NotReady的情况。root@master1:~# kubectl get nodesNAME STATUS ROLES AGE VERSIONmaster1 NotReady master 152m v1.18.1server3 NotReady <none> 94m v1.18.1这种情况是因为有某些关键的 pod 没有运
2020-06-17 15:23:33
1963
原创 kubernetes(3) ——Pod管理
1. 什么是PodPod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间共享IPC、Network和UTC namespace。注意:以下实验是在搭建好k8s的基础上进行的(见上一篇博文)2.pod管理1.用自主命令的方式运行pod部署过程中所有需要的镜像均由server2 push到harbor仓库中各个节点必须配置有certs.d
2020-06-17 15:17:29
367
原创 Kubernetes(2)——集群部署
k8s是Kubernetes的简称,因为K和S之间有8个字母,所以才会被称为k8s。k8s最初是在Google公司内部使用了10多年的技术,它的前身是叫做Borg(博格),直到2015年才被Google公司捐赠为开源项目。如果之前我们有接触过OpenStack,那么应该知道管理VM虚拟机资源可以用OpenStack。那么管理容器所对应的开源平台是什么呢?k8s就是其中之一,在k8s之前也有很多容器管理平台,有docker自身的docker swarm,也有apache推出的Mesos等等。相比较而言.
2020-06-17 11:34:28
171
原创 kubernetes(1)——基本介绍
Kubernetes概述Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务),管理员可以加载一
2020-06-17 10:01:57
231
原创 持续集成与持续交付(3)——jenkins持续集成
Jenkins简介Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。CI(Continuous integration持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试CD(Continuous Delivery持续交付) 是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。实
2020-06-12 18:02:54
192
原创 持续集成与持续交付(2)——版本控制git工具
https://git-scm.com/book/zh/v2关于版本控制本地版本控制系统许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。 这么做唯一的好处就是简单,但是特别容易犯错。有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异集中化的版本控制系统接下来人们又遇到一个问题,如何让在不同系统上的开发者协同工作
2020-06-12 17:14:20
218
原创 持续集成与持续交付(1)——基本原理
传统开发传统开发方式的拥护者和敏捷开发方式的拥护者看待软件开发的世界观是不同的。在传统开发的眼里,软件开发过程是确定的、可测的,只要在一开始努力收集到需要的信息并制定好计划,然后忠实的执行计划就应该可以成功。如果不成功一定是你在一开始就没有做好,没收集到必要的信息,计划做的不好或者执行不到位。然后传统开发方式就试图引入更多的流程,文档,试图让每一步都做到万无一失。敏捷开发而在敏捷的眼里世界可不是这样的,敏捷认为在软件开发中,世界是变化的,有很多不确定首先不论哪种开发方式,不过不管什么开发方式前期还是
2020-06-12 16:10:09
407
原创 ELK(6)——kibana数据可视化
Kibana 核心产品搭载了一批经典功能:柱状图、线状图、饼图、旭日图,等等。Kibana 开发工具为开发人员提供了多种强大方法来帮助其与 Elastic Stack 进行交互实验操作:(1)下载kibanahttps://elasticsearch.cn/download/# rpm -ivh kibana-7.6.1-x86_64.rpm(2)kibana配置:# vim /etc/kibana/kibana.ymlserver.port: 5601 #服务端口server
2020-06-12 15:59:44
348
原创 ELK(5)——logstash数据采集
1.基本介绍Logstash是一个开源的服务器端数据处理管道。logstash拥有200多个插件,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(大多都是 Elasticsearch。)Logstash管道有两个必需的元素,输入和输出,以及一个可选元素过滤器。输入:采集各种样式、大小和来源的数据 Logstash 支持各种输入选择 ,同时从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数
2020-06-09 19:30:23
308
原创 ELK(4)——搭建elasticsearch集群
本博客在上一篇基础上操作elasticsearch集群中节点角色Master:主要负责集群中索引的创建、删除以及数据的Rebalance等操作。Master不负责数据的索引和检索,所以负载较轻。当Master节点失联或者挂掉的时候,ES集群会自动从其他Master节点选举出一个Leader。Data Node:主要负责集群中数据的索引和检索,一般压力比较大。Coordinating Node:原来的Client node的,主要功能是来分发请求和合并结果的。所有节点默认就是Coordina
2020-06-09 18:31:11
191
原创 ELK(3)——elasticsearch插件部署
上一篇博客中,无法在界面中展示,通过插件,可以再浏览器上访问实验步骤:(1)下载elasticsearch-head插件——确保虚拟机可以上网网址:wget https://github.com/mobz/elasticsearch-head/archive/master.zip(2)解压【图片中的压缩包不对,重新下载后,在进行解压】(3)head插件本质上是一个nodejs的工程,因此需要安装node:(4)测试:(5)更换npm源安装# cd elasticsearch-head-
2020-06-09 17:16:50
158
原创 ELK(2)——elasticsearch的搭建与部署
实验步骤:server2中的内存大于2G(1)安装安装软件# rpm -ivh jdk-8u171-linux-x64.rpm# rpm -ivh elasticsearch-7.6.1.rpm //7.6版本自带jdk(2)开启服务设置服务自启:# systemctl daemon-reload# systemctl enable elasticsearch(3)修改配置文件:# vim /etc/elasticsearch/elasticsearch.ymlcluster.
2020-06-09 16:59:06
140
原创 ELK(1)——基本知识
一. ELK是什么?ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch、Logstash 和 Kibana。Elasticsearch 是一个开源的分布式搜索分析引擎,建立在一个全文搜索引擎库 Apache Lucene基础之上。Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎:一个分布式的实时文档存储,每个字段 可以被索引与搜索一个分布式实时分析搜索引擎能胜任上百个服务节点的扩展
2020-06-09 16:45:24
881
原创 SaltSack自动化运维(13)——SaltStack中的API接口
1.API接口(salt-api介绍)利用api接口来实现SaltStack推送,管理集群是非常方便的手段下面我们尝试利用API来实现Salt的功能saltsatck本身就提供了一套算完整的api,使用 CherryPy 来实现 restful 的 api,供外部的程序调用2.具体的实现过程如下(1)在master节点salt-api安装salt-api需要安装,然后进行一些配置才可以正常使用yum安装,需要的依赖包cherry也会被补全装上。(2)生成一个密钥文件(3)利用密钥成自签
2020-06-09 16:08:34
233
原创 SaltSack自动化运维(12)——saltstack建立top-master主机:实现大规模的集群管理(topmaster+(syndic+master)+minion1+minion2)
1.为什么要使用topmaster?搭建top master用来管理各个master,实现了master端的横向扩展,减轻了master端的负载压力通过建立top-master主机管理salt-master端及其salt-minion节点,同时可以进行salt-master主 机的横向扩展从而通过一个或几个top-master管理多个salt-master及其salt-minion,实现大规模的集群管理2.什么是syndic?syndic 相当于salt-master中的master3.实现
2020-06-09 15:56:48
321
原创 SaltSack自动化运维(11)——ssh模块(免客户端方式的部署和实施)
1.Salt SSH 介绍在之前我们一直围绕着需要在受控端安装 Minion 的前提下进行架构扩展那么如果在实际的环境中,由于某些限制无法在受控端服务器安装 Minion 客户端,该怎么办呢? Salt 在版本 0.17.0当中,引入了新的传输系统,它支持通过 SSH 通道来实现 Salt 的通信 通过这种方式,我们可以直接通过 SSH 通道在远程主机上执行使用SaltStack 而不需要在远程主机上运行 Salt Minion ,同时又能支持 SaltStack 的大部分功能,而且 SaltM
2020-06-09 15:35:59
189
原创 SaltSack自动化运维(10)——将推送数据保存在数据库中的两种方式
方式一:在master节点和minion节点均部署数据库(1)在server2上安装数据库yum install -y mariadb(2)开启server2上的数据库——没有初始密码(3)编辑脚本vim add.sql(7)将数据导入此时还没有数据(8)在server3上下载数据库并编写minion配置文件yum insatall -y mariadb-servervim /etc/salt/minion(9)重启minion服务(10)授权并交互(11)在
2020-06-09 15:19:57
133
原创 SaltSack自动化运维(9)——引用变量的多种方式
引用变量的基本方式,在模板中写入变量,在推送脚本中写入传给变量的值(1)修改apache的推送脚本(2)使用变量(3)编辑apache的模板,写入变量(4)推送:给server2安装httpd服务(5)推送成功之后在server2上查看配置文件里的参数确实是引用变量得来的(6)再次编辑推送脚本(7)写入要传送的值(8)编辑模板(9)再次推送(10)可以看到引用变量成功(11)再次编辑模板——第二种引用变量的方式(12)使用grains引用变量(13)
2020-06-09 14:49:53
139
原创 SaltSack自动化运维(8)——实现高可用(apache+nginx+keepalived)
前言之前使用server2(saltstack的master节点)给server3(saltstack的minion节点)安装了httpd服务接着使用server2(saltstack的master节点)给server4(saltstack的minion节点)安装了nginx服务现在使用server2(saltstack的master节点)给server3和server4部署高可用keepalived实验过程(1)在base目录下面建立keepalived目录将之前apache的推送脚本拷贝一
2020-06-09 14:35:10
108
原创 SaltSack自动化运维(7)——grains(静态数据)+pillar(动态参数)的详细说明
1.基本概念(1)什么是Pillar?——存放在masterPillar是在salt 0.9.8版本后才添加的功能组件。它跟grains的结构一样,也是一个字典格式,数据通过key/value的格式进行存储。在Salt的设计中,Pillar使用独立的加密sessiion,所以Pillar可以用来传递敏感的数据,例如ssh-key,加密证书等。存储位置:存储在master端存放需要提供给minion的信息应用场景:敏感信息,每个minion只能访问master分配给自己的信息(2)pilla
2020-06-09 11:58:10
477
原创 SaltSack自动化运维(6)——SaltStack配置文件详解
1.master配置文件详解saltstack大部分配置都已经指定了默认值,只需要根据实际需求进行修改就行 vim /etc/salt/master2 minion配置文件详解vim /etc/salt/minion
2020-06-09 11:29:00
88
原创 SaltSack自动化运维(5)——SaltStack命令详解
1.salt命令详解man salt或者salt -h 都可以查看salt命令使用方法salt -hUsage: salt [options] '<target>' <function> [arguments]Options(选项):--version : 查看saltstack软件的版本号。--versions-report : 查看saltstack软件以及依赖包的版本号。-h, --help : 查看帮助信息。--saltfile=SALTFILE:指定sal
2020-06-09 11:25:54
269
原创 SaltSack自动化运维(4)——自动化部署httpd和nginx
部署过程:(1)修改master端的配置文件[root@server2 ~]# cd /etc/salt/[root@server2 salt]# vim master #使用默认就可以 [root@server2 salt]# mkdir /srv/salt 这个目录没有得自己建,是base目录[root@server2 salt]# systemctl restart salt-master(2)安装httpd的方式 vim /srv/salt/apache.slshttp
2020-06-09 11:14:32
121
原创 SaltSack自动化运维(3)——yaml语法
1.什么是yaml?YAML是“YAML不是一种标记语言”的外语缩写(见前方参考资料原文内容);但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读, 容易和脚本语言交互,用来表达资料序列的编程语言。前面学ansible的时候playbook文件使用的是yaml语法,其实这都是因为它是用python写的altstack也是用python写的,也要使用yaml语言所以使用的yaml语法,那么我
2020-06-09 09:56:30
154
原创 SaltSack自动化运维(2)——安装与搭建
saltstack是基于C/S架构的服务模式,服务器端叫做Master,客户端叫作Minion并且有消息队列中的发布与订阅(pub/sub)服务模式,minion与master之间通过ZeroMQ消息队列通信Master和Minion端都以守护进程的模式运行,一直监听配置文件里面定义的ret_port也就是4506端口(接收minion请求)和publish_port也就是4505端口(ZMQ的发布消息)当minion运行时会自动连接到配置文件里面定义的Master地址ret_port端口进行连接认证
2020-06-09 09:52:34
201
原创 SaltStack自动化运维(1)——基础原理
1.什么是SaltStack?Saltstack是基于Python开发的一套C/S架构,具备Puppet、Ansible功能于一身的配置管理工具,功能十分强大,各模块融合度及复用性极高;使用号称世界上最快的消息队列ZeroMQ使得Saltstack能够秒级在数万台服务器上进行各种操作,而且使用RAS Key方式确认身份,传输采用AES加密,安全性能更高;Saltstack不仅仅是一款配置管理工具,还是一款做云计算和数据中心架构编排利器。目前Salt-cloud项目也已经合并到Saltstack主项
2020-06-09 09:25:08
332
原创 Docker(18)—— Swarm(Portainer 图形化管理swarm集群、添加服务等)
搭建步骤在server1上面清空之前的所有的web服务和监控服务此时,server2~4上的容器也已完全释放。下载镜像和yml文件。server1:在4个节点导入镜像并查看。server1:[root@server1 portainer]# docker load -i portainer.tar [root@server1 portainer]# docker load -i portainer-agent.tar [root@server1 portainer]# docker
2020-06-04 11:19:44
241
原创 docker(17)——使用yml文件部署swarm,设置数据卷,资源控制
yml文件部署swarm集群首先,在server1上删除之前输入命令手动方式创建的服务和容器。server1是swarm集群的管理节点,在server1上面删除,server2、server3和server4的容器自动也就释放了[root@server1 ~]# docker service rm vizviz[root@server1 ~]# docker service rm webweb[root@server1 ~]# docker service ls[root@server1 ~
2020-06-04 11:10:40
390
原创 Docker(16)—— swarm(集群部署,弹性伸缩,滚动更新,监控,global模式的设置)
Docker swarm简介Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源。Swarm和Kubernetes比较类似,但是更加轻,具有的功能也较kubernetes更少一些。Swarm的基本架构如下图所示这个图作为一个整体实际上都处于一个所谓的集群中,它可能对应了一到多台的实际服务器。每台服务器上都装有Docker并且开启了基于HTTP的DockerAPI。这个集群中有一个S
2020-06-04 11:00:15
1709
原创 Docker(15)——docker-machine(自动化部署docker)
1.docker-machine是什么?Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。Docker Machine支持在常规Linux操作系统、虚拟化平台、openstack、公有云等不同环境下安装配置docker host。Docker Machine 项目基于 Go 语言实现,目前在 Github 上的维护地址: https://github.com/docker/machine/Docker 与
2020-06-04 09:49:30
304
原创 docker(14)——安全性支持(使用Cgroups机制实现对容器的资源控制)
对Docker安全的理解Docker作为最重视安全的容器技术之一,在很多方面都提供了强安全性的默认配置其中包括:容器root用户的Capability能力限制、Seccomp系统调用过滤、Apparmor的 MAC访问控制、ulimit限制、pid-limits的支持镜像签名机制等。这篇文章我们就带大家详细了解一下Docker利用Namespace实现了6项隔离,看似完整,实际上依旧没有完全隔离Linux资源,比如/proc 、/sys 、/dev/sd*等目录未完全隔离,SELinux、time、s
2020-06-03 17:54:01
259
原创 docker(13)——Docker镜像仓库harbor的部署和使用
1.什么是harbor?Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。镜像的存储harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。harbor以docker-compose的规范形式组织各个组件,并通过docker-compose工具进行启停。Harbor是VMware公司开源了企业级
2020-06-03 17:09:31
549
原创 docker(12)——数据卷管理(convoy)
1.什么是Docker数据卷数据卷是一个或多个容器中专门指定的目录,它能够绕过联合文件系统。 卷被设计用作数据持久化、并且是独立于容器的生命周期的。因此,Docker不会在删除容器时自动删除数据卷卷,也不会主动“垃圾回收”掉容器不再使用的卷。说白了,数据卷的存在就是想让的容器的数据持久化存在,而且可以实现容器之间的数据共享。当我们在使用docker容器的时候,会产生一系列的数据文件,这些数据文件在我们关闭docker容器时是会消失的,但是其中产生的部分内容我们是希望能够把它给保存起来另作用途的
2020-06-03 16:08:21
290
原创 docker (11)——不同宿主机上的容器进行通信
2. macvlan容器网络方案的实现macvlan本身是linxu kernel的模块,本质上是一种网卡虚拟化技术。其功能是允许在同一个物理网卡上虚拟出多个网卡,通过不同的MAC地址在数据链路层进行网络数据的转发,一块网卡上配置多个 MAC 地址(即多个 interface),每个interface可以配置自己的IP,Docker的macvlan网络实际上就是使用了Linux提供的macvlan驱动。因为多个MAC地址的网络数据包都是从同一块网卡上传输,所以需要打开网卡的混杂模式ip lin..
2020-06-03 11:52:32
745
原创 docker(10)——docker容器的通信
1.基本介绍1)Docker的本地网络实现其实就是利用了Linux上的网络命名空间和虚拟网络设备(特别是veth pair)。(2)Docker中的网络接口默认都是虚拟的接口。虚拟接口的最大优势就是转发效率极高。这是因为Linux通过在内核中进行数据复制来实现虚拟接口之间的数据转发,即发送接口的发送缓存中的数据包将被直接复制到接收接口的接收缓存中,而无需通过外部物理网络设备进行交换。对于本地系统和容器内系统来看,虚拟接口跟一个正常的以太网卡相比并无区别,只是它速度要快得多。(3)Docker容器网络就
2020-06-03 11:06:21
191
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人