自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(297)
  • 收藏
  • 关注

原创 理解MapReduce执行过程

1. MapReduce简介(1)MapReduce是一种分布式计算模型,是Google提出的,主要用于搜索领域,解决海量数据的计算问题。(2)MR有两个阶段组成:Map和Reduce,用户只需实现map()和reduce()两个函数,即可实现分布式计算。2. MapReduce的执行过程上述图示过程描述如下:1、Map任务处理1.1 读取HDFS中的文件。每一行解析成一个<k,v>。每一个键值对调用一次map函数。1.2 覆盖map(),接收1.1产生的<k,v&gt

2020-06-14 17:48:12 606

原创 带你通俗的理解云计算和大数据

1.云计算远程管理和使用服务器资源,需要多少资源(硬件或软件)就配置多少资源,按需使用、按需付费。云计算是一种服务、一种模式、一种技术。(1)一种服务:云计算按照不同用户的需要提供了基础实施服务、定制软件服务、软件使用服务三个大的方面,也就是通常所说的Iaas、PaaS和SaaS。(2)一种模式:云计算改变了用户使用网络资源的模式,把用户从自己搭建机房或者托管服务器的传统模式中解放出来。用户通过网络可以完成所有的服务端操作,需要什么服务就动态配置什么服务,而且在费用上与传统模式比极其廉价。对企业用户

2020-06-07 18:29:43 1279

原创 自动化运维——Saltstack部署Keepalived高可用集群

1. 简单了解一下KeepalivedKeepalived是Linux下一个轻量级别的高可用解决方案。Keepalived是基于vrrp协议的一款高可用软件。Keepailived有一台主服务器和多台备份服务器,在主服务器和备份服务器上面部署相同的服务配置,使用一个虚拟IP地址对外提供服务,当主服务器出现故障时,虚拟IP地址会自动漂移到备份服务器。2. 实验环境主机名(IP) 服务server1(172.25.11.1) salt-masterserve

2020-05-24 22:06:24 518

原创 自动化运维——saltstack自动化部署apache服务和nginx服务

1. minion端安装部署apache1.master端配置1.)创建目录[root@server1 salt]# mkdir /srv/salt 2.)进入该创建apache目录[root@server1 salt]# cd /srv/salt/[root@server1 salt]# mkdir apache3.)在apache目录,建立install.sls[root@server1 salt]# cd apache/[root@server1 apache]# vim ins

2020-05-24 22:02:03 298

原创 自动化运维——Grains静态数据系统和Pillar动态数据系统

1. grains简介(1)grains是Saltstack最重要的组件之一,grains的作用是收集被控主机的基本信息,这些信息通常都是一些静态的数据,包括CPU、内核、操作系统、虚拟化等,在服务器端可以根据这些信息进行灵活定制,管理员可以利用这新信息对不同业务进行个性化配置。(2)Grains是SaltStack当中的一个数据系统,当Minion启动时Grains会把Minion的数据收集起来,比如操作系统版本、CPU 位数等。由于采用的是静态收集,只有当Minion发生重启时数据才会发生变化,在G

2020-05-19 15:58:00 360

原创 自动化运维——利用Saltstack一键部署zabbix监控平台

1. 案例简介使用Saltstack部署zabbix,主要包括zabbix-server、zabbix-agent、zabbix-web以及mysql。其中,zabbix的版本使用4.4,使用本地自己搭建的zabbix仓库,加快部署效率。两台虚拟机作为示例,分别是server2和server3。部署前提:已经完成saltstack的部署(包括salt-master和salt-minion)。2.部署过程(1)物理机搭建zabbix软件仓库[root@foundation8 zabbix]# ls

2020-05-19 13:34:29 716

原创 自动化运维——利用Saltstack 远程执行命令

1. 命令方式Salt命令由三个主要部分构成:salt '<target>' <function> [arguments]target: 指定哪些minion, 默认的规则是使用globe匹配minion id.salt内置的执行模块列表见:http://docs.saltstack.cn/ref/modules/all/index.html[root@server1 minions]# salt '*' test.pingserver2: Trueserve

2020-05-18 22:37:32 362

原创 自动化运维——saltstack简介及部署

1. Saltstack简介saltstack是一个配置管理系统,能够维护预定义状态的远程节点。saltstack是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据。saltstack是运维人员提高工作效率、规范业务配置与操作的利器。Salt的核心功能:使命令发送到远程系统是并行的而不是串行的使用安全加密的协议使用最小最快的网络载荷提供简单的编程接口Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。2.

2020-05-18 21:54:51 539

原创 k8s部署kubeapps应用为Helm提供web UI界面

1. 部署kubeapps(1)首先需要添加一个第三方库[kubeadm@server1 kubeapps]$ helm repo add bitnami https://charts.bitnami.com/bitnami"bitnami" has been added to your repositories[kubeadm@server1 kubeapps]$ helm search repo kubeappsNAME CHART VERSION APP VERSIO

2020-05-15 18:04:26 1257

原创 k8s使用helm部署ingress-nginx

部署前将之前部署的ingress-nginx删除:[kubeadm@server1 ~]$ kubectl delete namespaces ingress-nginx namespace "ingress-nginx" deleted[kubeadm@server1 ~]$ kubectl get ingressNo resources found in default namespace.[kubeadm@server1 ~]$1. 部署拉取并解压部署文件:[kubeadm@serv

2020-05-15 14:46:51 5351 1

原创 构建Helm Chart并部署mychart应用到k8s集群

1. 构建一个 Helm Chart$ helm create mychart$ tree mychart/mychart/├── charts├── Chart.yaml├── templates│ ├── deployment.yaml│ ├── _helpers.tpl│ ├── ingress.yaml│ ├── NOTES.txt│ ├── serviceaccount.yaml│ ├── service.yaml│ └── tests│

2020-05-14 22:45:01 1441

原创 k8s: pod has unbound PersistentVolumeClaims问题解决

1. 背景使用helm chart 部署redis-ha的时候 pod报错 pod has unbound PersistentVolumeClaims2. 原因分析查看了 redis-ha的 charts文件,发现value.yaml 中的storageClassName 取数为空,当storageClassName为空的时候如果没有指定 DefaultStorageClass ,那么是不会分配 pv给 claim的。3. 说明一下DefaultStorageClassPVC和PV的绑定是通过

2020-05-14 20:08:44 71475 6

原创 K8s的包管理工具Helm

1.Helm简介Helm是Kubernetes 应用的包管理工具,主要用来管理 Charts,类似Linux系统的yum。Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在

2020-05-14 19:53:10 429

原创 K8S集群基于metrics server的HPA(pod弹性伸缩)

1. HPA是什么Kubernetes有一个HPA(Horizontal Pod Autoscaler)的资源,可以实现基于CPU使用率的Pod自动伸缩的功能。(1)HPA基于Master Node上的kube-controller-manager服务启动参数horizontal-pod-autoscaler-sync-period定义的时长(默认为30秒),周期性的检测Pod的CPU使用率。如果需要设置horizontal-pod-autoscaler-sync-period可以在Master No

2020-05-13 22:51:59 558

原创 k8s部署可视化插件Dashboard(web UI)

1. Dashboard部署Dashboard可以给用户提供一个可视化的Web界面来查看当前集群的各种信息。用户可以用k8sdashboard部署容器化的应用,监控应用的状态,执行故障排查任务以及管理k8s各种资源。托管在:https://github.com/kubernetes/dashboardwget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml拉取

2020-05-12 17:52:40 1693

原创 k8s之Metrics-Server资源监控

1. metrics-servermetrics-server是集群核心监控数据的聚合器,用来替换之前的heapster。容器相关的metrics主要来自于kubelet内置的cadvisor服务,有了metrics-server之后,用户就可以通过标准的kubernetes API来访问到这些监控数据。mestrics API只可以查询当前的度量数据,并不保存历史数据。mestrics API URI为/apis/metrics.k8s.io/,在k8s.io/metrics维护。

2020-05-12 16:31:46 2362

原创 k8s容器资源限制

1. k8s容器资源限制k8s采用request和limit两种限制类型来对资源进行分配request(资源需求):即运行pod的节点必须满足运行pod的最基本需求才能运行pod。limit(资源限制):即运行pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。资源类型:CPU的单位是核心数,内存的单位是字节。一个容器申请0.5各CPU,就相当于申请1各CPU的一半,可以加个后缀m表示千分之一的概念。比如说100m的CPU,100豪的CPU和0.1个CPU

2020-05-08 20:34:23 3166

原创 k8s的访问控制(认证+授权+准入控制)

1. kubernetes API 访问控制由上图来介绍一下 Kubernetes API 的请求从发起到其持久化入库的一个流程。首先看一下请求的发起,请求的发起分为两个部分:第一个部分是人机交互的过程。 是大家非常熟悉的用 kubectl 对 apiserver 的一个请求过程;第二个部分是 Pod 中的业务逻辑与 apiserver 之间的交互。当我们的 apiserver 收到请...

2020-05-05 14:27:10 3150 1

原创 kubernetes的调度机制

1. Kuberbetes调度调度器通过kubernetes的watch机制来发现集群中新创建且尚未被调度到node上的pod。调度器会将发现的每一个未调度的pod调度到一个合适的node上来运行。kube-scheduler 是 Kubernetes 集群的默认调度器,并且是集群 控制面的一部分。如果你真的希望或者有这方面的需求,kube-scheduler 在设计上是允许你自己写一个调度组...

2020-05-05 13:01:04 1120

原创 k8s管理有状态应用的工作负载 API 对象StatefulSet

1.StatefulSets简介StatefulSet 是用来管理有状态应用的工作负载 API 对象。StatefulSet 用来管理 Deployment 和扩展一组 Pod,并且能为这些 Pod 提供序号和唯一性保证。和 Deployment 相同的是,StatefulSet 管理了基于相同容器定义的一组 Pod。但和 Deployment 不同的是,StatefulSet 为它们的每个...

2020-05-04 17:56:58 1137

原创 K8s之持久化卷(PV和PVC)

1. Persistent Volumes简介PersistentVolume(持久卷,简称PV)是集群内,由管理员提供的网络存储的一部分。就像集群中的节点一样,PV也是集群中的一种资源。它也像Volume一样,是一种volume插件,但是它的生命周期却是和使用它的Pod相互独立的。PV这个API对象,捕获了诸如NFS、ISCSI、或其他云存储系统的实现细节。PersistentVolumeC...

2020-05-04 14:21:42 2365 1

原创 k8s之 volumes配置管理(emptyDir、hostPath、nfs方式挂载卷)

1. K8S中的volume挂载方式容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用程序带来一些问题。 首先,当容器崩溃时,kubelet 将重新启动容器,容器中的文件将会丢失——因为容器会以干净的状态重建。当在一个 Pod 中同时运行多个容器时,常常需要在这些容器之间共享文件。 Kubernetes 抽象出 Volume 对象来解决这两个问题。Kubernetes卷具有明确的生命...

2020-04-27 22:19:57 15186

原创 k8s之configmap和secret向Pod注入配置数据

1.configmapconfigmap和secret是两种特殊的存储卷,它们不是给pod提供存储空间用的,而是给管理员或者用户提供了从外部向pod内部注入信息的方式.configmap:把配置文件放在配置中心上,然后多个pod读取配置中心的配置文件,不过,configmap中的配置信息都是明文的,所以不安全;secret:功能和configmap一样,只不过配置中心存储的配置文件不是明文的...

2020-04-27 20:54:32 2350

原创 k8s之Ingress 配置(TLS certificates+Basic Authentication )和Rewrite地址重写

1. Ingress TLS 配置采纳官网进行配置Ingress TLS 配置$ openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/O=nginxsvc"$ kubectl create secret tls tls-se...

2020-04-24 17:07:23 1705

原创 DaemonSet结合nodeselector部署ingress-controller到特定的node

1. 概述用DaemonSet结合nodeselector来部署ingress-controller到特定的node上,然后使用HostNetwork直接把该pod与宿主机node的网络打通,直接使用宿主机的80/433端口就能访问服务。优点是整个请求链路最简单,性能相对NodePort模式更好。缺点是由于直接利用宿主机节点的网络和端口,一个node只能部署一个ingress-control...

2020-04-24 14:58:54 2510

原创 k8s 对外服务之ingress

1. ingress概述k8s 对外暴露服务(service)主要有两种方式:NotePort, LoadBalance, 此外externalIPs也可以使各类service对外提供服务,但是当集群服务很多的时候,NodePort方式最大的缺点是会占用很多集群机器的端口;LB方式最大的缺点则是每个service一个LB又有点浪费和麻烦,并且需要k8s之外的支持; 而ingress则只需要一个N...

2020-04-24 14:18:08 57481 4

原创 k8s之service实现服务发现和负载均衡

1.Service概述service是kubernetes中最核心的资源对象之一,service和pod之间是通过Label串起来,相同的Service的pod的Label是一样的.同一个service下的所有pod是通过kube-proxy实现负载均衡.而每个service都会分配一个全局唯一的虚拟ip,也就cluster ip.在该service整个生命周期内,cluster ip保持不变...

2020-04-23 18:50:31 4006

原创 k8s之Pod控制器(ReplicaSet、Deployment、DaemonSet、job、Cronjob)

1.控制器Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无效,则会重新新建pod的资源。Pod 的分类:自主式 Pod:Pod 退出后不会被创建控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目控制器类型:Replication Controller和ReplicaSetDepl...

2020-04-23 15:02:33 2303

原创 kubernetes(k8s) 之pod的生命周期(init容器和探针)

1. pod的生命周期Pod 是 kubernetes 系统的基础单元,是由用户创建或部署的最小组件,也是 kubernetes 系统上运行容器化应用的资源对象。Kubernetes 集群中其他资源对象都是为 pod 这个资源对象做支撑来实现 kubernetes 管理应用服务的目的。Pod 可以包含多个容器,应用运行在这些容器里面,同时 Pod 也可以有一个或多个先于应用容器启动的 In...

2020-04-22 17:21:07 885

原创 k8s之Pod管理

1. 什么是PodPod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker),多个容器间共享IPC、Network和UTC namespace。2. 用自主命令的方式运行pod部署过程中所有需要的镜像均由server4 push到harbor仓库...

2020-04-22 15:06:36 705

原创 k8s之资源清单配置

1.什么是资源清单在k8s中,一般使用yaml格式的文件来创建符合我们预期期望的pod,这样的yaml文件我们一般称为资源清单2.资源清单的格式apiVersion: group/apiversion # 如果没有给定group名称,那么默认为croe,可以使用kubectl api-versions 获取当前k8s版本上所有的apiVersion版本信息(每个版本可能不同)kind: ...

2020-04-22 13:09:54 1231

原创 k8s 部署问题解决(节点状态为 NotReady)

问题使用kubectl get nodes查看已加入的节点时,出现了Status为NotReady的情况。root@master1:~# kubectl get nodesNAME STATUS ROLES AGE VERSIONmaster1 NotReady master 152m v1.18.1worker1 NotReady ...

2020-04-21 21:06:17 33351

原创 kubeadm部署kubernetes(k8s)

1. Kubernetes简介官方文档:https://kubernetes.io/docs/home/在Docker 作为高级容器引擎快速发展的同时,在Google内部,容器技术已经应用了很多年,Borg系统运行管理着成千上万的容器应用。Kubernetes项目来源于Borg,可以说是集结了Borg设计思想的精华,并且吸收了Borg系统中的经验和教训。Kubernetes对计算资源进行了...

2020-04-21 20:10:10 1302

原创 k8s与docker有啥关系

1. 简要介绍官方定义1:Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。官方定义2:k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。2. 与传统技术对比接下来我们看两张经典的图:一、从虚拟化角度:图1:图1是Docker容器与传统虚拟化方式的不同之处,...

2020-04-21 19:00:08 314

原创 docker安全性支持(使用Cgroups机制实现对容器的资源控制)

前言Docker作为最重视安全的容器技术之一,在很多方面都提供了强安全性的默认配置其中包括:容器root用户的Capability能力限制、Seccomp系统调用过滤、Apparmor的 MAC 访问控制、ulimit限制、pid-limits的支持镜像签名机制等。这篇文章我们就带大家详细了解一下Docker利用Namespace实现了6项隔离,看似完整,实际上依旧没有完全隔离Linux资...

2020-04-13 17:19:30 429

原创 docker容器数据卷管理

1.什么是Dokcer容器的数据卷数据卷是一个或多个容器中专门指定的目录,它能够绕过联合文件系统。卷被设计用作数据持久化、并且是独立于容器的生命周期的。因此,Docker不会在删除容器时自动删除数据卷卷,也不会主动“垃圾回收”掉容器不再使用的卷。说白了,数据卷的存在就是想让的容器的数据持久化存在,而且可以实现容器之间的数据共享当我们在使用docker容器的时候,会产生一系列的数据文件,这...

2020-04-10 13:26:20 226 1

原创 docker的跨主机网络访问(不同宿主机上的容器之间的通信)

1. 跨主机容器网络解决方案docker原生的overlay和macvlan第三方的flannel、weave、calico众多网络方案是如何与docker集成在一起的?libnetwork docker容器网络库CNM (Container Network Model)这个模型对容器网络进行了抽象2. macvlan容器网络方案的实现Macvlan是一个新的尝试,是真正的网络虚拟...

2020-04-10 12:40:44 3762

原创 docker容器通信

前言(1)Docker的本地网络实现其实就是利用了Linux上的网络命名空间和虚拟网络设备(特别是veth pair)。(2)Docker中的网络接口默认都是虚拟的接口。虚拟接口的最大优势就是转发效率极高。这是因为Linux通过在内核中进行数据复制来实现虚拟接口之间的数据转发,即发送接口的发送缓存中的数据包将被直接复制到接收接口的接收缓存中,而无需通过外部物理网络设备进行交换。对于本地系统和容...

2020-04-10 11:37:01 381

原创 docker的3种自定义网络(bridge、overlay、macvlan)

Docker 提供三种 user-defined 网络驱动:bridge, overlay 和 macvlanoverlay 和 macvlan 用于创建跨主机的网络1. 自定义网络自定义网络需要使用create命令,先来看看create命令可以跟哪些参数刚才原生网络不存在域名解析,但是自定义网络存在域名解析(1)bridge模式创建自定义的bridge网络并且查看创建一个bri...

2020-04-09 19:15:17 4211

原创 docker的三种原生网络(bridge,host,none)

docker自带的网络模式有bridge,none,host,docker network ls #查看docker网络一、bridge模式docker的默认模式,docker进程第一次启动会创建一个docker0虚拟网桥,此宿主机上启动的容器会默认连接到这个网桥上,容器通过这块网桥NAT访问外部网络,当执行docker run 加入-p参数是,实际是在iptables中加入了对应的DN...

2020-04-09 18:28:02 2542

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除