- 博客(129)
- 收藏
- 关注
原创 1.Prometheus
zabbixprometheus容器对物理机监控较好,适用于传统业务架构的环境对容器监控较好,支持kubernetes容器集群的监控数据库使用关系型数据库,随数据增长,数据库性能会限制使用时许型数据库,对监控数据读写效率高升级zabbix升级不方便升级方便,只要替换二进制文件就好规模上限约10000节点支持万为单位Prometheus 是一个开源的服务监控系统和时序数据库,其提供了通用的数据模型和快捷数据采集、存储和查询接口。
2023-08-23 08:03:52
415
原创 19.Helm
Helm本质就是让K8s的应用管理(Deployment、Service等)可配置,可以通过类似于传递环境变量的方式能动态生成。通过动态生成K8s资源清单文件(deployment.yaml、service.yaml)。然后调用 Kubectl 自动执行 K8s 资源部署。简化部署 : Helm允许使用单个命令轻松部署和管理应用程序,从而简化了整个部署过程高度可配置: Helm Charts提供了高度可配置的选项,可以轻松自定义和修改应用程序的部署配置。
2023-08-22 08:14:15
235
原创 18.安全机制
K8S 的安全机制客户端应用若想发送请求到 apiserver 操作管理K8S资源对象,需要先通过三关安全验证:认证(Authentication)、鉴权(Authorization)、准入控制(Admission Control)认证 确认请求方是否有连接 apiserver 的权限token认证(通过token字符串来认证) base认证(根据 账户:密码 的格式来认证)https认证(通过6443端口,使用证书和私钥来认证,支持双向认证)认证过程。
2023-08-20 18:33:57
333
原创 17.HPA和rancher
Pod 的自动伸缩HPA:Pod水平自动伸缩 为控制器管理的Pod资源副本数量实现自动扩缩容VPA:Pod垂直自动伸缩 据容器资源使用率自动设置CPU和内存的requestsHPA的实现原理:利用 metrics-server 定期收集 Pod 资源的平均 CPU 负载情况,根据HPA配置的 CPU/内存 requests 百分比阈值来动态调整 Pod 的副本数量HPA 扩容时,Pod 副本数量上升会比较快;缩容时,Pod 副本数量下降会比较慢。
2023-08-20 18:33:33
647
原创 16.ingress
K8S集群外的客户端应用访问K8S集群内部服务的方案Service:NodePort LoadBalancer externalIPs 只支持四层反向代理,端口数量有限,如果业务服务应用很多时端口的管理成本会比较高Ingress:支持七层反向代理,可自定义规则根据用户请求的 域名 或 URL路径 转发给指定的 Serviceingress资源对象:设置转发规则,告诉 ingress控制器应该根据什么域名或URL路径转发给相应的 Service 资源。
2023-08-20 18:33:17
129
原创 15.配置资源管理
ConfigMap 资源 简称 cm 用于保存 配置文件 环境变量 命令行参数 之类的不需要加密的信息创建 cm资源kubectl create cm <资源名称> --from-file=文件|目录 --from-literal=<键名>=<键值>查看 cm资源kubectl get cm <资源名称> -o yaml 或 kubectl describe cm <资源名称>使用 cm资源在 Pod 资源配置中的 spec.volumes 字段设置 configMap 类型的存储卷。
2023-08-20 18:32:50
143
原创 14.pod控制器
Pod控制器及其功用Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源。pod控制器有多种类型:ReplicaSet: 代用户创建指定数量的pod副本,确保pod副本数量符合预期状态,并且支持滚动式自动扩容和缩容功能。ReplicaSet主要三个组件组成:用户期望的pod副本数量标签选择器,判断哪个pod归自己管理。
2023-08-20 18:32:35
82
原创 13.PV和PVC
查看pv的定义方式FIELDS:metadata:#由于 PV 是集群级别的资源,即 PV 可以跨 namespace 使用,所以 PV 的 metadata 中不用配置 namespacename:speckubectl explain pv.spec #查看pv定义的规格spec:nfs:(定义存储类型)path:(定义挂载卷路径)server:(定义服务器名称)accessModes:(定义访问模型,有以下三种访问模型,以列表的方式存在,也就是说可以定义多个访问模式)
2023-08-20 18:32:20
206
原创 12.pod生命周期和存储卷
通过 scheduler 根据调度算法选择一台在最适合的 Node节点运行 Pod拉取镜像挂载 存储卷 等创建并运行容器根据容器的探针探测结果设置 Pod 状态Pod 生命周期的 5 种状态pending :Pod已经创建,但是处于包括Pod还未完成调度到Node节点的过程或者处于镜像拉取过程中、存储卷挂载失败等情况running : Pod中至少有一个容器正在运行succeeded :Pod中的所有容器都已经成功退出,且不再重启。
2023-08-12 16:40:23
137
原创 11.集群调度
k8s通过List-Watch机制事先每个组件的协作controller-manager、scheduler、kubelet通过List-watch机制监听apiserver发出的事件,apiserver通过List-Watch机制监听etcd发出的事件预选策略:通过调度算法过滤不满足条件的node节点,如果没有满足条件的node节点,pod会处于Pending状态,直到有符合条件的node节点出现。
2023-08-12 16:40:03
245
原创 10.pod资源限制和健康检查
Pod 容器的 3 种探针(健康检查)存活探针(livenessProbe):探测是否正常运行。如果探测失败则kubelet杀掉容器(Pod容器会根据重启策略决定是否重启)就绪探针(readinessProbe):探测Pod是否进入就绪状态(ready状态栏1/1),并做好接收service请求的准备。如果探测失败则Pod会变成未就绪状态(ready状态栏0/1),service资源会删除所关联的端点(endpoints),并不再转发请求给就绪探测失败的Pod。
2023-08-12 16:39:44
220
原创 9.pod资源管理
pod的定义:POd是k8s最小的创建和运行管理单元一个pod能包含几个容器一个pause容器(基础容器/父容器/根容器)一个或多个应用容器(业务容器)通常一个pod最好只包含一个应用容器,一个应用容器最好只运行在一个业务进程同一个pod里的容器,都是运行在同一个node节点上的,并且共享 NET、MNT、UTS、IPC、PID命名空间pause容器作用作为共享命名空间的基础给pod里的其他容器提供网络、存储资源的共享。
2023-08-12 16:39:22
171
原创 7.资源管理方法
kubectl create <资源类型> <资源名称> -n 命名空间 [选项]--image=镜像 --replicas=副本数 --port=容器端口kubectl get <资源类型|all> [资源名称] -n 命名空间 -o wide|yaml|json -wkubectl describe <资源类型> <资源名称> -n 命名空间kubectl delete <资源类型> <资源名称>|--all -n 命名空间 [--force --grace-period=0]
2023-08-12 16:38:52
164
原创 5.kubeadm安装
kubeadm init:在使用kubeadm方式安装K8S集群时,可根据初始化配置文件或者配置参数快速的初始化生成一个K8S的master管理平台kubeadm join:根据kubeadm init初始化的提示信息快速的将一个节点作为node节点或者其它的master节点加入到K8S集群当中所有节点进行初始化,安装docker引擎和kubeadm kubelet kubectl生成集群初始化配置文件并进行修改。
2023-08-06 17:18:26
401
原创 4.DNS和负载均衡
coreDNS是kubernetes的默认DNS实现。可以为集群中的service资源创建一个资源名称与clusterIP的对应关系解析。kubernetes可以选择使用DNS来避免将服务器的集群IP地址硬编码到您的引用程序中。
2023-08-06 14:56:32
1339
原创 3.CNI网络
叠加网络,在二层或者三层基础网络上叠加的一种虚拟网络技术模式,该网络中的主机通过虚拟链路隧道连接起来(类似于VPN)。Calico BGP模式工作原理(本质就是通过路由表来维护每个 Pod 的通信)Calico IPIP模式工作原理。kubernetes三种网络。
2023-08-06 14:56:13
207
原创 2.部署kubernetes的组件
etcd集群使用cfssl签发证书和私钥解压etcd软件包,获取二进制文件 etcd etcdctl准备etcd配置文件启动etcd服务进程,加入到etcd集群master使用cfssl签发证书和私钥准备bootstrap-token认证文件解压服务端软件包,获取二进制文件 kube-apiserver kube-controller-manager kubectl kube-scheduler。
2023-08-06 14:55:55
410
原创 1.Kubernetes
用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群,是一个生态极其丰富的容器编排框架工具。官网:GitHub:K8S有master和worker node两大节点master节点上有 apiserver、controller-manager、scheduler以及使用etcd做K8S集群的数据库。
2023-08-03 13:50:36
386
原创 1.Ansible
ansible 自动化运维工具(机器管理工具),可以实现批量管理多台 (成百上千) 主机,应用级别的跨主机编排工具特性无agent的存在,不需要在被控制的节点上安装客户端应用通过ssh协议与被控制节点通信基于模块工作的,可以通过模块实现在被控制节点上执行命令操作很多模块具有幂等性,可以实现多次模块操作的状态如果没有发送改变,则不会重复执行。
2023-07-29 15:36:41
323
原创 10.Docker安全和https
Docker容器安全注意点:尽量别做的事:尽量不用 --privileged 运行容器(会授权容器root用户拥有宿主机的root权限)尽量不在容器中运行ssh服务尽量不用 --network host运行容器(会使用host网络模式共享宿主机的网络命名空间)尽量要做的事:尽量使用最小化的镜像尽量以单一进程运行容器尽量以最低权限运行容器尽量下载使用官方的镜像或者自己构建镜像从私有仓库下载尽量使用只读的方式挂载数据卷 -v 宿主机目录:容器目录:ro。
2023-07-29 15:36:22
181
原创 9.容器服务更新和发现
服务自动发现和注册要解决什么问题?如果后端应用服务器群集节点数量很多,负载均衡器配置和管理会比较麻烦(节点配置条目数量众多,后端节点的网络位置发生变化还需要修改所有使用这些后端节点的负载均衡器配置等问题)consul模式client模式:负载转发注册信息给server节点,没有持久化能力server模式:持久化注册信息,在server节点之间同步注册信息server-leader节点:负载转发注册信息给其他server节点,并且对各节点做健康检查。
2023-07-29 15:35:56
167
原创 7.Docker-compose
Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。通过一个.yml或.yaml文件,将所有的容器的部署方法、文件映射、容器端口映射等情况写在一个配置文件里,执行docker-compose up命令就像执行脚本一样,一个一个的安装并部署容器。Docker-Compose将所管理的容器分为三层,分别是 工程(project),服务(service)以及容器(container)。
2023-07-25 16:17:27
1082
原创 6.Dockerfile实验
COPY --from=别名/0 第一阶段构建的文件/目录 当前阶段的文件/目录。 FROM 第一阶段的基础镜像 [AS 别名]可以构建镜像步骤最后添加清空系统和应用程序的缓存命令。尽可能检查Dockerfile文件中指令的数量。 FROM 第二阶段的基础镜像。尽可能的使用小体积的基础镜像。如何缩小镜像体积大小?使用多阶段(多级)构建。
2023-07-24 18:23:45
248
原创 5.Docker镜像创建
Dockerfile是由多条的指令组成的文件,其中每条指令对应 Linux 中的一条命令,Docker 程序将读取Dockerfile 中的指令生成指定镜像。Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么镜像构建透明性的问题、体积的问题就都会解决。镜像的定制实际上就是定制每一层所添加的配置、文件。
2023-07-21 17:00:03
132
原创 3.Docker网络和资源控制
##创建自定义网络#可以先自定义网络,再使用指定IP运行docker##docker1 为执行 ifconfig -a 命令时,显示的网卡名,如果不使用 --opt 参数指定此名称,那你在使用 ifconfig -a 命令查看网络信息时,看到的是类似 br-110eb56a0b22 这样的名字,这显然不怎么好记。#mynetwork 为执行 docker network list 命令时,显示的bridge网络模式名称。##创建自定义网络的容器。
2023-07-20 17:14:46
131
原创 11.Ceph 对象存储系统 RGW 接口
其中 S3 与 Swift 互不兼容,RadosGw 为了兼容 S3 与 Swift, Ceph 在 RadosGW 集群的基础上提供了 RGW(RadosGateway)数据抽象层和管理层,它可以原生兼容 S3 和 Swift 的 API。S3和Swift它们可基于http或https完成数据交换,由RadosGW内建的Civetweb提供服务,它还可以支持代理服务器包括nginx、haproxy等以代理的形式接收用户请求,再转发至RadosGW进程。
2023-07-18 15:53:09
499
原创 10.Ceph接口使用
开始之前需要在所需要客户端节点上面安装ceph-common软件包,因为客户端需要调用rbd命令将RBD镜像映射到本地当作一块普通硬盘使用。并还需要把ceph.conf配置文件和授权keyring文件复制到对应的节点。本例主要是使用Linux客户端挂载RBD镜像为本地磁盘使用。
2023-07-17 19:15:39
356
原创 8.分布式存储
存储机制会把数据分散存储到多个节点上,具有高扩展性、高性能、高可用性等优点。常见的分布式存储对比说明/文件系统TFSFastDFSMogileFSMoose FSGluster FSCeph开发语言C++CPerlCCC++开源协议GPL V2GPL V3GPLGPL V3GPL V3LGPL数据存储方式块文件/Trunk文件块文件/块对象/文件/块集群节点通信协议私有协议(TCP)私有协议(TCP)HTTP私有协议(TCP)
2023-07-14 15:43:50
404
原创 7.kafka+ELK连接
注:在 0.11 版本以前的Kafka,对此是无能为力的,只能保证数据不丢失,再在下游消费者对数据做全局去重。由于生产者生产的消息会不断追加到 log 文件末尾,为防止 log 文件过大导致数据定位效率低下,Kafka 采取了分片和索引机制,将每个 partition 分为多个 segment。topic 是逻辑上的概念,而 partition 是物理上的概念,每个 partition 对应于一个 log 文件,该 log 文件中存储的就是 producer 生产的数据。follower 故障。
2023-07-13 14:53:46
3302
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人