自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (2)
  • 收藏
  • 关注

原创 k8s:Kubernetes 亲和性、反亲和性、污点、容忍

Kubernetes 亲和性调度一般情况下我们部署的 Pod 是通过集群的自动调度策略来选择节点的,默认情况下调度器考虑的是资源足够,并且负载尽量平均,但是有的时候我们需要能够更加细粒度的去控制 Pod 的调度,比如我们内部的一些服务gitlab 之类的也是跑在Kubernetes 集群上的,我们就不希望对外的一些服务和内部的服务跑在同一个节点上了,害怕内部服务对外部的服务产生影响;但是有的时候我们的服务之间交流比较频繁,又希望能够将这两个服务的 Pod 调度到同一个的节点上。这就需要用到 Kuberne

2021-03-16 23:08:48 4331

原创 k8s:Kubernetes 调度器介绍

Kubernetes 调度器介绍kube-scheduler 是 kubernetes 系统的核心组件之一,主要负责整个集群资源的调度功能,根据特定的调度算法和策略,将 Pod 调度到最优的工作节点上面去,从而更加合理、更加充分的利用集群的资源,这也是我们选择使用 kubernetes 一个非常重要的理由。调度流程默认情况下,kube-scheduler 提供的默认调度器能够满足我们绝大多数的要求,我们前面和大家接触的示例也基本上用的默认的策略,都可以保证我们的 Pod 可以被分配到资源充足的节点上运

2021-03-15 21:32:08 447

原创 k8s:StorageClass

StorageClassPV 和 PVC 的使用方法,但是PV 都是静态的,什么意思?就是我要使用的一个 PVC 的话就必须手动去创建一个 PV,我们也说过这种方式在很大程度上并不能满足我们的需求,比如有一个应用需要对存储的并发度要求比较高,而另外一个应用对读写速度又要求比较高,特别是对于 StatefulSet 类型的应用简单的来使用静态的 PV 就很不合适了,这种情况下我们就需要用到动态 PV,也就是我们今天要讲解的StorageClass。创建要使用 StorageClass,我们就得安装对应的

2021-03-14 20:37:43 479 3

原创 k8s:PVC 的使用

PVC 的使用在我们真正使用的时候是使用的 PVC,就类似于我们的服务是通过 Pod 来运行的,而不是 Node,只是 Pod 跑在Node 上而已,准备工作在使用 PVC 之前,我们还得把其他节点上的 nfs 客户端给安装上我们需要在所有节点安装 nfs 客户端程序,安装方法和上节课的安装方法一样的。必须在所有节点都安装 nfs 客户端,否则可能会导致 PV 挂载不上的问题新建 PVC新建一个数据卷声明,请求 1Gi 的存储容量,访问模式也是ReadWriteOnce,YAML 文件如下:(p

2021-03-13 17:02:30 3528

原创 k8s:PV 的使用

PV 的使用我们有通过hostPath 或者 emptyDir 的方式来持久化我们的数据,但是显然我们还需要更加可靠的存储来保存应用的持久化数据,这样容器在重建后,依然可以使用之前的数据。但是显然存储资源和 CPU 资源以及内存资源有很大不同,为了屏蔽底层的技术实现细节,让用户更加方便的使用,Kubernetes便引入了 PV 和 PVC 两个重要的资源对象来实现对存储的管理。概念PV 的全称是:PersistentVolume(持久化卷),是对底层的共享存储的一种抽象,PV 由管理员进行创建和配置,

2021-03-13 12:10:36 504

原创 k8s:DaemonSet 与 StatefulSet 的 使用

DaemonSet 与 StatefulSet 的使用DaemonSet 的使用通过该控制器的名称我们可以看出它的用法:Daemon,就是用来部署守护进程的,DaemonSet 用于在每个Kubernetes 节点中将守护进程的副本作为后台进程运行,说白了就是在每个节点部署一个Pod 副本,当节点加入到Kubernetes 集群中,Pod 会被调度到该节点上运行,当节点从集群只能够被移除后,该节点上的这个Pod 也会被移除,当然,如果我们删除DaemonSet ,所有和这个对象相关的Pods都会被删除。

2021-03-12 21:06:59 519

原创 k8s:RBAC

RBACRBAC - 基于角色的访问控制。RBAC使用rbac.authorization.k8s.io API Group 来实现授权决策,允许管理员通过 Kubernetes API 动态配置策略,要启用RBAC,需要在apiserver 中添加参数–authorization-mode=RBAC ,如果使用的kubeadm安装的集群,1.6 版本以上的都默认开启了RBAC,可以通过查看 Master节点上 apiserver 的静态Pod 定义文件:cat /etc/kubernetes/man

2021-03-12 13:52:18 445

原创 k8s:Secret

Secret一般情况下ConfigMap 是用来存储一些非安全的配置信息,如果涉及到一些安全相关的数据的话用ConfigMap 就非常不妥了,因为 ConfigMap 是名为存储的,我们说这个时候我们就需要用到另外一个资源对象了:Secret ,Secret 用来保存敏感信息,例如密码、Auth 令牌和 ssh key等等,将这些信息放在Secret 中比放在Pod 的定义中或者docker 镜像中来说更加安全和灵活。Secret 有三种类型:Opaque:base64 编码格式的 Secret,用

2021-03-09 21:36:41 217

原创 k8s:ConfigMap

ConfigMapkubernetes中非常重要的资源对象:ConfigMap ,在实际工作中许多应用经常会有从配置文件、命令行参数或者环境变量中读取一些配置信息,这些配置信息我们肯定不会直接写死到应用程序中去的,比如你一个应用连接一个redis 服务,下一次想更换一个,还得重新去修改代码,重新制作一个镜像,这肯定是不可取的,而ConfigMap 就给我们提供了向容器中注入配置信息的能力,不仅可以用来保存单个属性,也可以用来保存整个配置文件,比如我们可以用来配置一个redis服务的访问地址,也可以用来保存

2021-03-09 17:06:20 126

原创 k8s:Service

Service尽管每个Pod 都有自己的IP 地址,但是如果Pod 重新启动了的话那么他的IP 很有可能也就变化了。这就会带来一个问题:比如我们有一些后端的Pod 的集合为集群中的其他前端的Pod 集合提供 API 服务,如果我们在前端的Pod 中把所有的这些后端的Pod 的地址都写死,然后去某种方式去访问其中一个Pod 的服务,这样看上去是可以工作的,但是如果这个Pod 挂掉了,然后重新启动起来了,是不是IP 地址非常有可能就变了,这个时候前端就极大可能访问不到后端的服务了。遇到这样的问题该怎么解决呢

2021-03-09 13:15:14 200 2

原创 k8s:Job 和 Cronjob 的使用

Job 和 Cronjob 的使用资源对象:Job,在日常的工作中经常都会遇到一些需要进行批量数据处理和分析的需求,当然也会有按时间来进行调度的工作,在我们的 Kubernetes 集群中为我们提供了Job 和CronJob两种资源对象来应对我们的这种需求。Job 负责处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod 成功结束。而CronJob则就是在Job 上加上了时间调度。JobJob官方文档我们用 Job 这个资源对象来创建一个任务,定一个Job 来执行一个倒计时的任务。ap

2021-03-08 17:01:31 551

原创 k8s:metrics yaml配置

apiVersion: autoscaling/v2beta1kind: HorizontalPodAutoscalermetadata: name: myapp-hpa-v2 namespace: defaultspec: minReplicas: 1 ##至少1个副本 maxReplicas: 8 ##最多8个副本 scaleTargetRef: apiVersion: apps/v1 kind: Deployment n

2021-03-08 16:38:01 389

原创 k8s:结合Metrics-Server实现弹性伸缩

k8s结合Metrics-Server实现自动伸Metrics-Server概念介绍:Metrics-Server是集群核心监控数据的聚合器,在k8s早期版本中,对资源的监控使用的是heapster的资源监控工具。但是从 Kubernetes 1.8 开始,Kubernetes 通过 Metrics API 获取资源使用指标,例如容器 CPU 和内存使用情况。这些度量指标可以由用户直接访问,例如通过使用kubectl top 命令,或者使用集群中的控制器,,因为k8s的api-server将所有的数据持

2021-03-08 16:17:16 241

原创 k8s:Pod 自动扩缩容

Pod 自动扩缩容通过手工执行kubectl scale 命令可以实现Pod 的扩缩容,但是这样毕竟需要每次去手工操作一次,而且不确定什么时候业务请求量就很大了,所以如果不能做到自动化的去扩缩容的话,这也是一个很麻烦的事情。如果Kubernetes 系统能够根据Pod 当前的负载的变化情况来自动的进行扩缩容就好了,因为这个过程本来就是不固定的,频繁发生的,所以纯手工的方式不是很现实。幸运的是Kubernetes 为我们提供了这样一个资源对象:Horizontal PodAutoscaling(Pod水平

2021-03-07 22:28:12 1321

原创 k8s:Deployment

Deployment推荐使用Deployment这种控制器,而不是RC或者RS,这是为什么呢?对比下二者之间的功能吧,首先RC是Kubernetes的一个核心概念,当我们把应用部署到集群之后,需要保证应用能够持续稳定的运行,RC就是这个保证的关键,主要功能如下:确保Pod数量:它会确保Kubernetes中有指定数量的Pod 在运行,如果少于指定数量的Pod,RC就会创建新的,反之这会删除多余的,保证Pod的副本数量不变。确保Pod健康:当Pod不健康,比如运行出错了,总之无法提供正常服务时,RC

2021-03-07 15:41:43 204

原创 k8s:Replication Controller、 Replica Set 管理Pod

Replication Controller、 Replica Set 管理Pod假如现在有一个Pod正在提供线上的服务,我们来想想一下我们可能会遇到的一些场景:某次运营活动非常成功,网站访问量突然暴增运行当前Pod的节点发生故障了,Pod不能正常提供服务 了第一种情况,可能比较好应对,一般活动之前我们会大概计算下会有多大的访问量,提前多启动几个Pod,活动结束后再把多余的Pod杀掉,虽然有点麻烦,但是应该还是能够应对这种情况的。第二种情况,可能某天夜里收到大量报警说服务挂了,然后起来打开电

2021-03-07 13:58:17 326

原创 k8s:初始化容器

初始化容器Init Container就是用来做初始化工作的容器,可以是一个或者多个,如果有多个的话,这些容器会按定义的顺序依次执行,只有所有的Init Container执行完后,主容器才会被启动。一个Pod里面的所有容器是共享数据卷和网络命名空间的,所以Init Container里面产生的数据可以被主容器使用到的。Init Container和之前的钩子函数有点类似,只是是在容器执行前来做一些工作,从直观的角度看上去的话,初始化容器的确有点像PreStart,但是钩子函数和我们的InitConta

2021-03-06 22:32:09 756 1

原创 k8s:健康检查

健康检查Pod中容器的生命周期的两个钩子函数,PostStart与PreStop,其中PostStart是在容器创建后立即执行的,而PreStop这个钩子函数则是在容器终止之前执行的。除了上面这两个钩子函数以外,还有一项配置会影响到容器的生命周期的,那就是健康检查的探针。在Kubernetes集群当中,我们可以通过配置livenessprobe(存活探针)和readiness probe(就绪探针)来影响容器的生存周期。* kubelet 通过使用 liveness probe 来确定你的应用程序是否

2021-03-06 18:10:20 1061

原创 k8s:Pod 的生命周期

Pod 的生命周期我们知道Pod是Kubernetes集群中的最小单元,而 Pod 是由容器组成的,所以在讨论 Pod 的生命周期的时候我们可以先来讨论下容器的生命周期。实际上 Kubernetes 为我们的容器提供了生命周期钩子,就是我们说的Pod Hook,Pod Hook 是由 kubelet 发起的,当容器中的进程启动前或者容器中的进程终止之前运行,这是包含在容器的生命周期之中。我们可以同时为 Pod 中的所有容器都配置 hook。Kubernetes 为我们提供了两种钩子函数:Post

2021-03-06 16:52:27 601

原创 k8s:静态 Pod

静态 Pod在Kubernetes集群中除了我们经常使用到的普通的 Pod 外,还有一种特殊的 Pod,叫做Static Pod,就是我们说的静态Pod。静态 Pod 直接由特定节点上的kubelet进程来管理,不通过master 节点上的apiserver。无法与常用的控制器Deployment或者DaemonSet进行关联,它由kubelet进程自己来监控,当pod崩溃时重启该pod,kubelete也无法对他们进行健康检查。静态 pod 始终绑定在某一个kubelet,并且始终运行在同一个节点上。

2021-03-06 15:58:52 335

原创 k8s:基本概念与组件

基本概念Kubernetes 中的绝大部分概念都抽象成 Kubernetes 管理的一种资源对象:Master:Master 节点是 Kubernetes 集群的控制节点,负责整个集群的管理和控制。Master 节点上包含以下组件:kube-apiserver:集群控制的入口,提供 HTTP REST 服务kube-controller-manager:Kubernetes 集群中所有 资源对象的自动化控制中心kube-scheduler:负责 Pod 的调度Node:Node 节点是 Ku

2021-03-06 15:13:40 2455 6

原创 Kubernetes 初体验

简介Kubernetes 是 Google 团队发起的一个开源项目,它的目标是管理跨多个主机的容器,用于自动部署、扩展和管理容器化的应用程序,主要实现语言为 Go 语言。我们先搭建一套集群让我们来感受下,去体验下里面的一些概念和用法,等你对这些基本概念熟悉以后,再来讲解Kubernetes的组件和架构应该就更加容易了。katacoda:katacoda,可以在网站上帮我们启动一个minikube的环境(学习)2.Docker for MAC/Windows(推荐)/minikube(本地

2021-03-06 14:52:54 146

原创 docker之docker-consul自动发现consul-Template自动替换配置文件

什么是consul:consul是hashicorp公司推出的开源工具,用于实现分布式式系统的服务发现预配置与其他分布式服务的注册与发现方案不同,如Airbnb的SmartStack等,consul的方案更趋于‘一站式’其内置了服务注册与发现框架、分布式一致性协议实现、健康检查key/value存储、多数据中心方案,不再需要依赖其他工具(列如Zookeeper等),使用起来也较为简单。consul使用Golang实现,因此具有天然可移植性(支持linux、Windows和Mac os X);安装包仅包含一

2021-01-27 21:28:41 273 1

原创 docker之docker-harbor镜像仓库

什么是harbor:harbor是VMware公司开源的企业级docker registry项目,其目标是帮助用户迅速搭建一个企业级的docker registry服务。harbor的优势:字段描述基于角色控制用户和仓库都是基于项目进行组织的,用户在项目中可以拥有不同的权限基于镜像的复制策略镜像可以在多个harbor实例之间复制(同步),适用于负载平衡、高可用性、多数据中心、混合和多云的场景支持LDAP/ADharbor与现有的企业LDAP/AD集成,用于用户认证

2021-01-27 18:23:24 772

原创 doceker之docker-compose容器编排

docker-compose是docker的服务编排工具,主要用来构建基于docker的复杂应用。compose通过一个配置文件管理多个docker容器,非常适合于组合对个容器进行开发的场景。(当然k8s是当前主流编排工具)文件格式及编写注意事项:使用YAML是需要注意如下事项:1.不支持使用制表符TAB键缩进,需要使用空格缩进。(严格)2. 通常开头缩进两个空格3. 字符后缩进一个空格,如冒号、逗号、横杠4. 用#号注释5. 如果包含特殊字符,要求使用单引号(‘’)引起来6. 布尔值(tr

2021-01-22 18:56:13 387

原创 docker数据管理与dockerfile创建、端口映射网络通信

一个完整的docker镜像可以支撑一个docker容器的运行,在docker的挣个使用过程中进入一个已经定型的容器之后,就可以在容器中进行操作,最常见的操作就是在容器中安装应用服务,如果要把已经安装的服务进行迁移,就需要把环境以及搭建的服务生成新的镜像数据管理:数据卷# 创建数据卷[root@localhost ~]# docker run -d -v /test --name abc bbox:v1[root@localhost ~]# docker exec -it abc /bin/sh/

2021-01-20 16:29:19 357 2

原创 docker概述及基本操作

docker概述:docker是在linux容器里运行应用的开源工具,是一种轻量级的虚拟机。docker的容器技术可以在一台主机上轻易地为任何应用创建一个轻量级、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化重新部署、调试的繁琐重复性工作。docker的宗旨“一次封装,到处运行”,docker三大核心概念:镜像、容器、仓库docker容器与传统虚拟化:特性docker容器传统虚拟机启动速度秒级分钟级计算能力损耗几乎无损耗50%左右性能接近

2021-01-19 17:53:17 134

原创 MongoDB常用操作及概述

MongoDB简介:Mongodb是一款跨平台、面向文档的数据库可实现高性能、高可用性、并能够轻松扩展是一个基于分布式文件存储的开源数据库系统,在高负载的情况下添加更多的节点,可以保证服务器的性能。Mongodb同时也是一个介于关系型和非关系型数据库之间的产品,在非关系型数据库中功能最丰富最想关系型数据库。不采用关系摸型主要是为了获得更好的扩展性,不再有row行的概念,其运行方式主要基于两个概念:集合与文档。MongoDB特点:面向集合存储、模式自由、丰富的查询语句和多级索引、复制机制、易于水平扩展

2021-01-18 18:57:14 147

ingress-controller

ingress-controller

2022-02-21

promethuse.zip

prometheus+grafana

2021-08-03

空空如也

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

TA关注的人

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