自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

杨仕虎的博客

一个追求自主学习的人

  • 博客(166)
  • 收藏
  • 关注

原创 openstack 云主机分辨率问题

kvm 分辨率

2022-09-02 11:15:51 107

原创 性能篇:内存

内存相关概念虚拟内存:是一个逻辑概念,目的是为了便于程序的使用和系统的管理,虚拟内存会与物理内存形成映射关系常驻内存:当前处于主存中的内存匿名内存:无文件系统位置或者路径名的内存,进程堆和栈空间的内存都属于匿名内存(文件之外的使用内存)参考:https://www.jianshu.com/p/84d6d5c75c02分页:虚拟内存与物理内存映射他们使用页概念(固定大小,默认4kb),通过维护页表实现访问(每个进程各种维护一个页表,虚拟内存叫页,物理内存叫帧)分段:基于段

2022-05-19 16:35:52 50

原创 性能篇:CPU

CPU相关概念:处理器:物理芯片,一个或者多个核数:一个物理芯片上实现多个CPU功能,又称为芯片级多处理(chip-levelmultiprocessing,CMP)线程数:利用单个CPU中断间隙实现多线程,提升CPU效率,也就是我们说的开超线程(1*2)指令:一些列的命令,告诉CPU需要做什么操作,比如资源I/O、算术、逻辑控制。中断:中断是系统实现CPU能合理的服务计算机的资源,由于CPU中断和执行的快速,我们才能感觉到电脑上的程序都是同时运行的。硬中断:由硬件设备引发的中断,跟操作系统

2022-05-11 21:51:01 637

原创 mac实现sstp协议windows

安装软件:brew install sstp-client执行命令:sudo sstpc --log-stderr --cert-warn --user <user> --password <password> <server> usepeerdns require-mschap-v2 noauth noipdefault defaultroute refuse-eap noccpsudo一定要加上问题:这样拨号无法实现本地访问网络,默认路由都走拨号地址了

2022-02-12 20:05:50 712 1

原创 2021思考、学习、丢弃

2021年转变:职业转行思考丢弃职业转行由于自己的起点低,所以我转行了2次,应该还有N次(未来)打工人不要看不起任何人,不论是什么职位,拿了多少钱,其实我们都是没有选择权的一批人,拿着自己的单位时间价值去换生存,而当今没有选择其实才更可怕,我经常会问同事也包括我自己,问他们有什么爱好吗?很多人一开始就有点懵,想了下我想养鱼,养猫、去旅游等等,我同事还是刚毕业没多久的,他们说了一句开玩笑的话说被生活磨平了,我也希望是一句玩笑,但当我自己想了很久后我也默许了,好像现在的爱好变成了要解脱什么。

2021-12-26 16:12:23 78

原创 OpenStack octavia LB负载均衡基础

octaviaoctavia 作为openstack的负载均衡方案,实现4层和7层的负载,自Pike版本替换了neutron自带的LB方案(Neutorn LBaaS)。基本对象loadbalancer:负载均衡器的服务对象,所有的配置、操作、客户端命令等等vip:作用在loadbalancer上,用于外部对内部的业务集群的访问入口listener:监听器对象就是一组负载规则,通过其配置外部对VIP访问的端口,算法,类型等等(haproxy的frontend 配置)pool:后端业务真实服务器

2021-12-23 16:58:36 1413

原创 OpenVSwitch 基础使用

OpenVSwitch 基础概念bridge代表的一个交换机,主机可以创建多个bridge,通过规则把bridge下的多个port数据转发ovs-vsctl add-br Bridge (del-br删除)创建网桥ovs-vsctl list-br 列出全部的网桥 - 网桥fail-mode - standalone:如果连接了控制器,网桥就变成openflow交换机,不然就变成普通交换机进行mac地址学习 - secure:不论是否连接控制器,都是openflow交换机,需要添

2021-11-23 15:05:00 1105

原创 OpenVSwitch 基础

OpenVSwitch简称ovs,是一个由纯软件实现的二层交换机功能,可以实现全部交换机的功能,二层交换、网络隔离、QoS、流量监控、vxlan等等,用于虚拟化场景下,配合sdn实现交换机的控制和转发分离,网络的自动化和可编程能力,能适应网络的架构快速变化。ovs的架构用户态ovs-vswitchd交换机的功能实现,vSwitch的守候进程daemon,包括一个支持流交换的Linux内核模块。ovsdb-server数据库用于保存ovs配置信息,ovs-vswitchd获取数据。

2021-11-11 15:57:54 2552 1

原创 python基础篇总结

理解编程语言是什么?语言是一种解决问题的思维方式,我们人类的语言和鸟类的语言又或者计算机的语言都是同等功能,为了获得交流去解决现有问题,而交流的本质就是数据,我们每天交流产生数据,并对数据做出决策,决定明天是否上班有可能数据来自明天有台风所以不能去上班。同样编写一个程序也是大致有数据和指令组成,数据可以是用户提供也可以是计算得出,最终由指令完成我们想要的结果输出。程序是由人编写,必然不会脱离我们对于他的理解标准规范语言规范是便于我们学习和理解,使计算机之间达成一致交流。就类似写中文字,先写左

2021-09-12 18:30:11 41

原创 python3 字符编码

机器识别的语言二进制(0和1))人类识别的语言中文、英文等等我们人类怎么才能跟机器交流?通过一张编码表把我们人类的每个字对于到机器识别的二进制h=1101000(十进制104)编码表编码表随着时间的的更新,出现了多个版本ASCII:数字 32–126 分配给了能在键盘上找到的字符GBK:基于上代,增加支持了中文Unicode:基于上代,支持了基本所有的语言(万国码)UTF-8:基于Unicode做了优化,优化区别了不同语言的占用字符个数(关系到容量的大小,从而可能导

2021-08-31 13:15:38 108

原创 debian 编译内核升级

内核版本源码包下载:https://mirrors.edge.kernel.org/pub/linux/kernel/wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.19.188.tar.gztar -xvf linux-4.19.188.tar.gz -C /usr/src安装编译工具apt-get updateapt install -y automake make g++ bison flex libel

2021-07-26 16:53:44 172

原创 Ubuntu16.04单用户修改密码

Ubuntu16.04单用户修改密码具体步骤1、重启系统,按esc防止自动进入系统2、选择高级选项,回车3、选择带有recovery mode版本,按e进入编辑模式4、把从or recovery nomodeset后面的全部字段替换成 rw single init=/bin/bash5、修改密码,输入passwd回车,输入2次密码,提示更新成功就完成了6、强制重启,reboot -f...

2021-06-23 20:28:08 439

原创 openstack 关于实例密码问题

实例的密码修改方式创建MV时修改密码运行中的MV修改密码创建MV时修改密码基于cloud-init实现配置的传递给MVconfigguration:可以实现初始化密码和安装软件等等,MV端通过cloud-init传入cloud-init有固定的语法的,但是要可以使用shell实现#cloud-configchpasswd: list: | root:123456 ubuntu:123456 expire: falsessh_pwauth: t

2021-04-30 17:39:07 536 1

原创 ceph Crush map

Crush mapCRUSH map采用树状结构,最小叶子节点就是真实物理磁盘称为device,中间节点称为bucket,每个bucket可以是device集合,也可以是低一级的bucket集合,最上面还有一个root节点,代表集群的入口CRUSH hierarchy(层次结构):树型结构目录,决定故障域的范围(11个层级)CRUSH rule(规则):CRUSH rule决定如何从bucket中分配OSD,创建存储池可以指定ruleCRUSH hierarchy生成环境可以考虑这样的层级:数

2021-04-30 09:53:37 198

原创 openstack 关于磁盘性能问题

使用的工具:fio安装fioyum install libaio libaio-develwget https://brick.kernel.dk/snaps/fio-3.10.tar.gztar xf fio-3.10.tar.gz./configuremake && make install命令:fio -filename=/dev/vda -direct=1 -iodepth 1 -thread -rw=write -ioengine=libaio -bs=1024k

2021-04-22 15:22:05 275

原创 ansible Roles

Roles可以根据层次结构实现复杂场景的配置,roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷的include它们的一种机制。实现代码的复用三层结构roles目录层级,roles项目目录,playbook运行文件project:项目目录,名称用于playbook的任务role指定功能目录:files:存放copy模块或script模块调用的文件tasks:存放模块任务文件vars:存储变量文件meta:用于定义此角色的特殊设定及其依赖关系

2021-04-20 16:37:25 51

原创 ansible 进阶

ansible 进阶使用template模板:实现配置文件的模板生成with_items:playbook循环执行When:playbook条件判断for or if:template模板文件的循环操作和 if 操作template模板可以理解为是copy的升级版,常规copy文件到远程主机后如果需要修改文件内容可以使用replace,但是这样操作就会有一个问题,文件发生了改变,下次再执行playbook文件,又会copy一次文件,然后执行replace,失去了幂等性也不方便,templat

2021-04-12 12:37:03 57

原创 ansible 基础

ansible特点基于python模块调用方法,完成需要的操作基于ssh协议连接,无须客户端支持playbook编排,通过yaml编写幂等性,不会重复执行操作,避免错误操作导致重大问题支持roles角色的功能(类似python的包概念)也就是多个模块的集合,实现一个项目ansible架构host:用于管理的主机清单,ansibel 本身为控制端,被控制端都需要加入到host中playbooks:编写yaml格式的一个个模块进行复杂数据结构编写执行modules:支持命令行执行各种模

2021-04-09 11:42:06 57

原创 python 字符串功能操作

字符串格式化通过占位符拼接字符串.format (推荐)%sfmessage = "学会{0}开发就能创造美好生活".format("python")message1 = "学会{0}开发就能创造美好生活{0}"message2 = "学会{}开发就能创造美好生活{}".format("python","python")print(message)print(message1.format("python"))print(message2)#以位置的占位符从0开始,{}不写默认就是

2021-03-25 23:32:06 96

原创 Jenkins Pipeline声明式流水线

Jenkins是为了顺应以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发,也就是敏捷开发模型传统的瀑布模型上一个的输出是下一个的输入,没有迭代与反馈,也就代表了没有回头路可以走,对于后期的更改成本巨大敏捷模型符合现在互联网思想,快交付、以人为本,用户可以参与其中,小版本迭代升级,但是相对的也带来频繁的重复打包、构建、测试、上线等等的操作,这个部分就交给了Jenkins 来完成自动化的持续集成Jenkins常用项目类型自由风格软件项目(FreeStyle Project):基于w

2021-03-22 19:49:29 418

原创 Ceph 命令记录

ceph版本:ceph version 14.2.18( nautilus )基础查询使用ceph df#查看ceph磁盘详细信息ceph -s#查看ceph整体信息,包括集群状态,osd、mon、mgr等等ceph health detail#查看详细的集群状态错误信息ceph osd tree#查看osd树目录ceph-mon --show-config | grep pgceph-mon --show-config | grep mon_max_pg_per_osd#查

2021-03-19 18:00:14 112

原创 Jenkins安装和基础环境

Jenkins安装方式:yum和rpm服务依赖:Java 8 or Java 11用户名:jenkins主目录:/var/lib/jenkins常规插件安装官方(yum)sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.reposudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

2021-03-12 19:37:49 450

原创 Rabbitmq 集群

Rabbitmq 集群集群目的就是为了实现rabbitmq的高可用性,集群分为2种普通集群:主备架构,只是实现主备方案,不至于主节点宕机导致整个服务无法使用镜像集群:同步结构,基于普通集群实现的队列同步普通集群slave节点复制master节点的所有数据和状态,除了队列数据,队列数据只存在master节点,但是Rabbitmq slave节点可以实现队列的转发,也就是说消息消费者可以连接到slave节点,但是slave需要连接到master节点转发队列,由此说明只能保证了服务可以用,无法达到高

2021-02-26 16:24:48 7712 1

原创 K8s 滚动更新

Deployment特性事件和状态查看保存更新版本记录,支持回滚到指定版本可以实现多种自动更新方案暂停和启动,支持每次升级必要的暂停,以便是否继续以下的更新说白就是基于Pod的滚动更新高级支持,特性都是针对更新而言Deployment更新更新的是Pod模板下的内容,比如镜像文件,标签、存储等等,而怎么更新就由Deployment控制器完成更新策略:滚动更新和重新创建更新和回滚方式:yaml文件和命令行暂停更新方案:符合现实使用的更新方案更新策略滚动更新(默认):新旧版本

2021-02-19 18:43:16 703

原创 K8s configmap配置

前提基于分布式的场景需求,应用都是会存在多个节点上的,对于随着应用的增加会带来很大的不便利,如果配置发生更改就要进行重新提交git、打包、分发,分发上线的工作就变得繁杂和沉重开源本身也提供了很多的解决方案,比如diamond、apollo、disconf等等,而k8s就是configmapconfigmap以非机密性的数据形式提供给Pod,实现分布式环境对配置信息的需求存储格式:K/V键值对使用方式:环境变量和挂载(volumes)创建方式:命令行创建和配置清单存储格式serv

2021-02-09 16:47:46 447

原创 K8s secret配置

secretsecret用于保存铭感信息,比如密码、ssh-key、令牌等等存储格式:K/V键值对使用方式:环境变量和挂载(volumes)密文方式:base64创建方式:命令行创建和配置清单使用场景:opaque:通用自定义数据,base64编码kubernetes.io/service-account-token:用于存储SA用户认证信息kubernetes.io/dockerconfigjson:用户存储docker仓库认证信息kubernetes.io/tls:用于tls通讯

2021-02-09 15:07:23 1090

原创 prometheus 安装配置

prometheus安装方法二进制安装:便于学习理解docker安装:方便和可移植k8s安装:也是基于docker,实现可管理监控指标cAdvisor:是一个谷歌开发的容器监控工具,提供http方式获取数据和web界面,它被内嵌到k8s中作为k8s的监控组件(kubelet)看下docker默认的监控docker stats缺点:无法被获取数据和界面,也就是说是个单机版的,cAdvisor就是弥补这样的缺点cadvisor是可以单独安装的,但是如果安装了kubelet,就

2021-02-08 17:24:48 195

原创 2020 选择和学习

2020总结选择比努力更重要成为终身学习者

2021-02-07 13:35:20 133 2

原创 prometheus 基础

prometheus语言:go,高性能和并发监控方式:pull方式,解放客户端,客户端只负责采集数据,简化复杂度接口:HTTP,简单方便数据库:时序数据库支持报警:支持

2021-02-05 17:49:34 73 1

原创 K8s 控制器(controller-manager)

前提对于k8s的自主式的Pod出现问题的解决方案Pod主进程发生故障,由kubelet根据重启策略进行操作恢复Pod程序发生故障,由存活性探测(liveness probe)进行故障通报,再进行重启策略问题:针对意外删除Pod或者节点故障导致的问题,Pod无法进行处理K8s 控制器通过绑定Pod进行监控其状态,实现满足用户预期的状态,通过控制器实现Pod生命周期中的各类自动管理行为,比如创建和删除(k8s的控制器存在很多种,针对资源类型不同)k8s依据资源类型分为5种工作负载:Pod

2021-02-04 18:45:02 722

原创 K8s cni+flannel (cnm)

CNI 和 CNM都是针对容器网络的解决方案CNM: Docker 公司(docker container runtime 背后的公司)提出CNI:CoreOS公司提出,项目被接纳托管到 CNCFCNMdocker默认网络模式host:共享主机网络Network namespacebridge:桥接主机网卡none:容器有独立的Network namespace,但是没有网络配置(常用测试使用)这样的几种网络方式是无法满足容器互联需求的CNM定义Libnetwork是CNM

2021-02-03 13:58:35 366

原创 etcd 集群部署

安装go语言环境wget https://studygolang.com/dl/golang/go1.15.6.linux-amd64.tar.gztar -xvf go1.15.6.linux-amd64.tar.gz -C /usr/local/#下载并解压到/usr/local下配置环境变量vi /etc/profileexport GOROOT=/usr/local/go export GOPATH=/go/gopath #工作目录export PATH=$PATH:

2021-01-29 09:30:24 49

原创 K8s PV和PVC(动态)

存储类(StorageClass)当用户需要使用存储时,需要通过PVC进行绑定PV,有几种情况会出现问题PVC需求匹配不到需要的PVPVC需求量很大的时候用户需求无法确定的常见,会随着环境而改变存储类就是为了实现PV动态供给,对于PV进行分组管理,管理员可以自定义级别或者功能来区分使用...

2021-01-27 19:19:13 1140

原创 K8s PV和PVC(静态)

k8s存储卷的使用问题配置信息透明化,存在安全隐患存储定义信息对于用户角度来说复杂且没有必要,用户对于存储就是使用即可PV和PVC为了实现用户和集群管理员的解耦,添加了一个抽象层(也就是由管理员配置好,用户直接使用)PV(persistentvolume):...

2021-01-25 19:48:50 420 1

原创 K8s 存储卷配置

docker存储容器删除,数据也删除,针对需要应用持久化的数据就要配置存储,常见就是基于存储到节点上(而节点存储可以是NFS、ceph、iscsi等等)K8s的Pod存储由于Pod是基于容器的集合,基于pause容器实现存储共享K8s 存储卷存储卷作用就是由于容器的结构,数据会随着容器删除而删除,那么Pod对于需要数据的共享和持久化就需要借助存储卷配置1、使用配置结构docker:docker的存储使用是直接相对于容器本身配置资源,基于节点目录或者NFS,ceph都要基于节点上配

2021-01-24 00:56:48 395

原创 setenforce: SELinux is disabled

关于正常操作都做了还是无法启动SELinuxvi /etc/default/grubselinux=1grub2-mkconfig -o /boot/grub2/grub.cfg#重新生成 grub.cfg 文件关于grub:https://blog.51cto.com/13554481/2055628

2021-01-22 17:56:42 306

原创 K8S Pod配置进阶1 containers字段解释

k8s为什么需要Pod作为资源最小单位容器本身的使用都是基于单进程(包括子进程),也就是命名空间里进程为1的,可以接受并处理信号,所以进程终止容器就退出了IPC-进程间通讯:一般来说,一个app只有一个进程,但是在一些需要多进程的程序或者远程服务调用时,就需要跨进程通信UTS-主机名:需要依赖于hostname的应用appNetwork:需要容器拥有一样的IP、路由等网络资源怎么考虑需要把多个容器放到一个Pod中辅助容器:作为辅助主应用的容器,比如收集log日志agent容器代理容器:主

2021-01-21 19:31:06 2843

原创 k8s 关于apiVersion的选择思考

Kubernetes API 是基于资源的(RESTful)、通过 HTTP 提供的编程接口REST:REpresentational State Transfer 直接翻译就是表现层状态转移,这样不便于理解首先,之所以晦涩是因为前面主语被去掉了,全称是 Resource Representational State Transfer:通俗来讲就是:资源在网络中以某种表现形式进行状态转移。Resource:资源,即数据(前面说过网络的核心)。比如 newsfeed,friends等;Represe

2021-01-15 10:51:48 1085

原创 k8s 网络工具 nsenter

k8s 工具借助nsenter命令进入容器命名空间进行抓包和网络诊断#!/bin/bashns=$1 #传参1:命名空间pod_name=$2 #传参2:pod名称Container_id=$(kubectl describe pod -n $ns $pod_name | grep "Container ID:" | cut -d '/' -f 3 | cut -c 1-12)node=$(kubectl get pods -n $ns $pod_name -o wide | a

2021-01-13 17:42:15 458

原创 CoreDNS 部署及分析

Kubernetes DNS服务基础知识CoreDNS作用Server实现了POD地址的固定,DNS可以实现访问Server的名称访问到POD(服务发现)对于一些服务提前不知道Server地址,但是要基于服务配置,就可以直接使用Server的名称,后期只要创建这样名称即可CoreDNS 部署DNS服务是依赖于server访问,地址就是ClusterIP,需要固定IP(需要和kubelet的参数指定一样–cluster-dns=10.0.0.2)DNS服务基于deployment部署集群认

2021-01-13 11:58:43 1459

空空如也

空空如也

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

TA关注的人

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