背景:需要使用存储,查阅了相关资料,发现这玩意速度非常快,采用元数据和对象存储然后这个主要用法,就是支持s3和juice格式的挂载,官方文档是https://juicefs.com/docs这里只是记录下,我使用的一些内容服务器IP:10.11.64.186需开放端口:s3服务网关端口: 9000mysql端口: 3306安装mysqlyum install -y mysq
背景在阿里云ACK中部署了单体spring boot应用,但是当cpu使用率大于90%时,应用会出现问题,为了拿到问题pod中的jvm dump文件便于开发人员分析和解决由于cpu过高引起的服务问题功能1.依赖阿里云ARMS接口的prometheus提供的监控CPU数据,默认检查5次,远程获取CPU使用大于90%的ACK中的POD名称2.将问题POD中的线程堆栈日志文件,自动拷贝至FTP对应目录下
一.背景:Azure云上由于虚拟机故障导致无法启动,需要进行恢复二.思路:1.创建故障虚拟机的磁盘快照(这是出于安全考虑,备份数据);2.使用故障虚拟机的磁盘快照创建新的虚拟机,称为修复虚拟机;3.打开cloud shell,安装vm-repair插件;4.根据修复虚拟机的操作系统,根据故障诊断,选择执行对应的repair脚本,脚本位置:https://github.com/Azure/repai
背景:源虚拟机为单点服务,需要设置灾备一.原理这个服务是灾备的,两个流程,分别是复制流程: 先启动复制,将源虚拟机数据复制到目标虚拟机;故障转移流程: 通过设置原网络转发至目标网络,完成灾备。具体原理是开通这个服务后,源端 VM 会安装一个Site Recovery服务扩展,并且将源端虚拟机注册到该服务,源端虚拟机将数据写入源区域的缓存帐户下,而后恢复服务保管库,负责接收源区域下缓存账户下的数
性能指标IOPS:应用程序在一秒钟内发送到存储磁盘的请求数,包括Read和Write数(单位时间内的次数)IOPS可细分为如下几个指标:Toatal IOPS,混合读写和顺序随机I/O负载情况下的磁盘IOPS,这个与实际I/O情况最为相符,大多数应用关注此指标。Random Read IOPS,100%随机读负载情况下的IOPS。Random Write IOPS,100%随机写负载情况下的IOP
前期知识4个表: filter:一般的过滤功能 nat:用于nat功能(端口映射,地址映射等) mangle:用于对特定数据包的修改 raw:有限级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能 5个链: PREROUTING,IN
docker默认会通过veth技术进行container 与网桥docker0的网络互联,如何找出它们之间的对应关系?一.正向找,由veth所属的网络空间ID去找container[root@k8s-node2 libnetwork]# docker run -dit --name busybox busybox[root@k8s-node2 libnetwork]# docker psCONTA
一.为什么弃用docker,而采用containerd?k8s在v1.20版本完全弃用docker,v1.24版本完全删除docker相同点:都是符合OCI标准的高级别运行时不同点:1.docker作为运行时调用链长使用docker时的调用链 k8s调用流程:kubelet(客户端) ->docker shim -> d
容器运行时分为低层运行时和高层运行时 一.低层运行时主要负责与宿主机操作系统打交道,根据指定的容器镜像在宿主机上运行容器的进程,并对容器的整个生命周期进行管理。而这个低层运行时,正是负责执行我们前面讲解过的设置容器 Namespace、Cgroups等基础操作的组件。低级运行时:侧重于运行容器,为容器设置 namespace 和 cgrouplxcrktrunckatagVisor二.高层运行时主
一.命令行工具介绍默认执行yum install -y docker后会安装以下docker命令行工具[root@localhost bin]# ls -l | grep docker -rwxr-xr-x. 1 root root 33069608 8月 21 2018 docker -rwxr-xr-x. 1 root root 38088856 8月 21 2018 docker
一台主机最多装多少个docker,这个受限于主机的端口范围影响和主机的cpu,内存性能影响如果docker需要将宿主机的端口做映射,那么主机端口范围会是docker个数的限制1.假设性能无穷大的时候,会有端口限制假设一台主机的/etc/sysctl.conf中的net.ipv4.ip_local_port_range默认值为 32768 61000 ,也就是说可以对同一个服务器的ip+port创建
轮询(Round Robin)加权轮询(Weighted Round Robin)源地址哈希(SourceIP Hash)目标地址哈希(Destination Hash)最小连接数(Least Connections)加权最小连接数(Weighted Least Connections)最小期望延迟( Shortest Expection Delay)
结论:IPVS工作模式:dr,nat,ipip(ip tunnel),fullnatk8s的代理模式如果使用ipvs的话,那么它模式是NAT网络,调度算法为rr轮询。使用ipvsadm --help可以查看如何使用的工作模式 --real-server -r server-address server-address is host (and port) --gatewaying
查看静态pod的目录,确认为/etc/kubernetes/manifests[root@k8s-node1 manifests]# systemctl status kubelet ● kubelet.service - kubelet: The Kubernetes Node Agent Loaded: loaded (/usr/lib/systemd/system/kubelet.se
Guaranteed:Pod 中的每个容器,包含初始化容器,必须指定内存和 CPU 的requests和limits,并且两者要相等。Burstable:Pod 不符合 Guaranteed QoS 类的标准;Pod 中至少一个容器具有内存或 CPU requests。BestEffort:Pod 中的容器必须没有设置内存和 CPU requests或limits。requests:最低配额,表示
可以使用kubeadm重新生成:kubeadm init phase kubeconfig admin
Service的四种类型:1.cluster ip(默认,集群内部访问,提供pod的vip地址),2.nodeport,对外暴露应用,30000-327673.Loadlbalance: 公有云ecs负载均衡器,会在每个ecs上启动一个nodeport,然后loadbalacne会自动添加nodeip:nodeport4.ExternalName
一.前言:cordon与drain区别 drain设置为节点不可调度,kubectl get node的时候看到STATUS是NotReady,同时驱逐该Node上的pod到其他node节点上去; cordon仅仅设置节点为不可调度,kubectl get node时,STATUS显示Ready,SchedulingDisable,但是不会驱逐该节点上的现存pod二.处理流程:1.设置node不
k8工作流程1.用户使用create yaml创建pod,请求给apiserver,apiserver.将yaml中的属性信息(metadata)写入etcd2.Scheduler触发watch机制,监听到API Server有创建Pod的event,使用调度算法选择node,调度器将node信息给apiserver,apiserver将绑定的node信息写入etcd3.kubelet通过list
一.$HOME/.kube/config文件内容详解--- apiVersion: v1 clusters: - cluster: certificate-authority: fake-ca-file server: https://1.2.3.4 name: development - cluster: insecure-skip-tls-verify: true
externalName:将外部的服务引用到k8s集群内部,也称别名服务工作原理:会在coredns上相关域名上生成cname记录使用背景:让使用者像调用内部服务一样使用外部服务实际场景使用,可以引用外部的数据库服务,以IP或者端口方式ExternalName一.使用方式1.通过域名映射一句话总结:通过别名服务B,去访问外部服务A创建测试网站 [root@k8s-master1 external_
参考:https://kubernetes.io/zh-cn/docs/setup/best-practices/cluster-large/每个节点的 Pod 数量不超过 110节点数不超过 5,000Pod 总数不超过 150,000容器总数不超过 300,000
1.查看k8s证书是否过期openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '2.若过期了则执行更新,手动更新所有证书命令kubeadm alpha certs renew all3.更新用户配置,需要执行下面多个命令kubeadm alpha kubeconfig user --client-n
kube-proxy支持三种代理模式: 用户空间,iptables和IPVS 在kubectl edit configmap kube-proxy -n kube-system修改代理模式,如果是ipvs的话,可以在scheduler中修改调度算法[root@k8s-master1 ~]# cat kube-proxy-configmap.yaml apiVersion: v1 data:
一.基础概念探针 是由 kubelet 对容器执行的定期诊断,具体调用由容器实现的 Handler (处理程序)针对运行中的容器,kubelet 可以选择是否执行以下三种探针,以及如何针对探测结果作出反应:livenessProbe:针对pod运行状态存活检测。即Pod是否为running状态,如果LivenessProbe探针探测到容器不健康,则kubelet将kill掉容器,并根据容器的重启策
一.概念Operator就是将运维软件在k8s上的部署过程简化成一个包,通过一键即可部署,可以达到部署目的。Prometheus Operator通过自定义资源CRD(ServiceMonitor以及PodMonitor和 PrometheusRule)简化prometheus在k8s上的部署过程,同时可以保持prometheus server配置动态更新,适配k8s的pod以及service地址
一.计算机数据方向:写入:cpu(自带高速cache) > 内存 > 文件系统(指定目录或者文件) > 缓冲(在内存上,buffer) > 磁盘写数据时首先写到缓存,将写入的页标记为 dirty,然后向外部存储 flush;读取:cpu(自带高速cache) < 内存 < 文件系统(指定目录或者文件) < 缓存(在内存上,cache) < 磁盘读数据
继上篇《自动化运维项目之jenkins pipline+ansible playbook》,仍有许多痛点,即项目文件繁杂,每个项目一个jenkinsfile,无法统一管理部署项目,从而衍生出一些想法,能不能通过一个配置文件管理所有的前后端项目,后采用PiplineCfg.yaml配置文件,将所有项目需要的变量写入,通过传参方式传入每个部署逻辑中去,即可达到一个配置文件管理所有部署项目之目的一.前置
jenkins pipline + ansible-playbook
很久没写博客了,2021年本来是个大展宏图的一年,但是遇到点问题,发现自己更适合比较大一点的公司,也渐渐的意识到跳板的重要性。今天从甲方江苏零浩离职,即将前往浩鲸,一来是南京没有啥留恋的地方,二是也想充实下自己的技术栈。所以选了个出差性质的工作,从事运维也好几年了,从网络到基础运维再到中级运维,再到一个不是特别合格的开发运维。也有很有想法,devops这个口号一直在喊,自己认为好像一直没有做到真正
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号