k8s+crio+podman搭建集群
前言在传统的k8s集群中,我们都是使用docker engine做为底层的容器管理软件的,而docker engine因为不是k8s亲生的解决方案,所以实际使用中会有更多的分层。之前我们也讲过,k8s为了调用docker engine,专门写了一个dockershim做为CRI,而在1.20版本的时候,k8s就宣布停止更新dockershim了,也就是说再往后的版本就不推荐使用k8s+dockershim+docker engine的方案了。
而k8s官方比较推荐的解决方案中,官方比较推荐的是cri-o或者containerd,前者是基于开放容器计划(OCI)的实现,后者是基于docker的containerd,后脱离出来进行独立开发的组件,现归属于CNCF组织。
CRI-O vs containerd vs docker daemon这三者有啥区别呢?
首先,cri-o是cri的实现,可以直接调用底层的runc
其次,containerd是CRI-Containerd的实现,可以调用底层的runc
而docker则需要先调用dockershim,然后调用docker,再调用conta ...
ssh服务
概念、定义:
SSH是Secure Shell Protocol的简写,由IETF网络工作小组(Network Working Group)制定。
SSH在数据传输之前,将联机数据包进行加密处理,才会发出给服务端。
SSH是unix/linux进行远程控制或者传输文件的一种协议。
SSH包括两部分,SSH客户端和SSHD服务端。
特点
SSH是密文传输,较明文传输的telnet安全。
SSH是基于TCP传输协议的,所以是可靠传输。
SSH的默认端口是22,如要改变端口号,需在修改配置文件之后,加-p参数指定新端口进行ssh连接。
连接过程:基于账户密码的连接方式:
客户端用会话密钥加密用户名、认证方法、密码并将加密后的结果发至服务器端。
服务器端使用会话密钥解密得到用户名、密码,进行核对。若正确,则通过连接;若失败,则返回认证失败报文给客户端。客户端循环第一步,直至达到最大连接次数,TCP连接关闭。基于公钥私钥的连接方式:
客户端使用ssh-keygen生成一对公钥和私钥。
客户端将公钥推送至服务端。ssh-copy-id -i /.ssh/id_r ...
git创建空白分支
前言最近在github上创建一些新的分支,发现默认会从某一个分支拉过来成立一个新的分支,.git文件下会有前一分支的提交信息,例如head、ref、logs等。
那我们能不能创建一个新的分支,让它成为一个空白的分支,不带其他分支的head、ref、logs呢?
答案是可以的,可以使用orphan参数。
git orphan用法:
1git checkout --orphan branch-name
首先我们在github创建一个test仓库,克隆到本地,写入一些东西进行提交。
1234567891011121314151617181920212223242526272829➜ test git:(master) ls➜ test git:(master) git logsgit:'logs' 不是一个 git 命令。参见 'git --help'。最相似的命令是 log➜ test git:(master) git logfatal: 您的当前分支 'master' 尚无任何提交➜ test git:(mast ...
linux-dd命令
dd命令可以轻易实现创建指定大小的文件,如:
dd if=/dev/zero of=test bs=1M count=1000
会生成一个1000M的test文件,文件内容为全0(因从/dev/zero中读取,/dev/zero为0源)。但是这样为实际写入硬盘,文件产生速度取决于硬盘读写速度,如果欲产生超大文件,速度很慢。
在某种场景下,我们只想让文件系统认为存在一个超大文件在此,但是并不实际写入硬盘。则可以:
dd if=/dev/zero of=test bs=1M count=0 seek=100000
此时创建的文件在文件系统中的显示大小为100000MB,但是并不实际占用block,因此创建速度与内存速度相当。seek的作用是跳过输出文件中指定大小的部分,这就达到了创建大文件,但是并不实际写入的目的。
当然,因为不实际写入硬盘,所以你在容量只有10G的硬盘上创建100G的此类文件都是可以的。
docker的平替--podman
前言我们都知道,docker这个东西,是CaaS(Container as a Service,容器即服务)的通常解法。我们使用docker来管理容器的生命周期,比如镜像的生成、容器的管理和定制(Dockerfile)、仓库的上传和下载等。
但是docker存在很多不方便使用的地方,所以我们可以使用podman来做平替。
podman介绍Podman(Pod Manager), 是由RedHat公司推出的容器管理工具。它可以做为docker的平替,使用上也非常相似。但其实二者之间也存在非常显著的差别,相比起来podman会比docker更加完善一些。
podman与docker的差异1. 底层CRI
docker:使用的是docker-shim, 这个CRI(Container Runtime Interface, 容器运行接口)并不是docker实现的,而是kubernetes帮它实现的。由于早期没有docker平替工具,故kubernetes开发了一个api调用docker管理下的容器资源。后来由于有了其他的平替工具,所以kubernetes在1.20版本正式停止维护docker- ...
清理缓存
释放缓存区内存的方法
1)清理pagecache(页面缓存)
1root@homeserver:~# echo 1 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=1
2)清理dentries(目录缓存)和inodes
1root@homeserver:~# echo 2 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=2
3)清理pagecache、dentries和inodes
1root@homeserver:~# echo 3 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=3
上面三种方式都是临时释放缓存的方法,要想永久释放缓存,需要在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,然后sysctl -p生效即可!
另外,可以使用sync命令来清理文件系统缓存,还会清理僵 ...
linux ACL权限控制
概念ACL是Access Control List(访问控制列表)的缩写,用于linux复杂的用户权限控制当中。
Cent7系统之前,只有系统安装时创建的文件系统支持ACL,后来创建的文件系统则不支持。
Cent7系统后,不管文件系统是否在安装系统时被建立,都支持ACL。
命令getfacl:用于查看ACL权限。
setfacl:用于设置ACL权限。
用法1. 查看文件或目录权限getfacl 文件/文件夹名
12345678[root@vm1 ~]# getfacl ~getfacl: Removing leading '/' from absolute path names# file: root# owner: root# group: rootuser::r-xgroup::r-xother::---
2. 修改用户对文件或目录的权限setfacl -m u:uname:access 文件/文件夹名
1234567891011[root@vm1 ~]# setfacl -m u:young:rwx -R ~ #将/root的权 ...
linux安装jdk8
方法1. 下载安装包并上传2. 解压12root@home:/home/young# tar zxf jdk-8u131-linux-x64.tar.gz -C /usr/local/root@home:/home/young# mv /usr/local/jdk1.8.0_131/ /usr/local/java8
3. 在/etc/profile添加项目1234export JAVA_HOME=/usr/local/java8/export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH
4. 使/etc/profile生效1source /etc/profile
5. 验证jdk版本1java -version
vim操作(第一弹)
前言vi/vim是unix/linux操作系统下的文本编辑器。由于unix/linux万物届文件的特性,vi/vim可以编辑任何格式的文件。下面是常见的知识点,仅供参考。
知识点编辑方式vi/vim + 文件路径。其中,文件路径可以是绝对路径,也可以是相对路径。如果这个文件不存在,就会新建一个文件。
编辑模式vi/vim常用的模式有两种:命令行模式和输入模式。
模式切换由命令行模式切换到输入模式的命令:
新增 (append)a :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动。A: 从光标所在列最後面的地方开始新增资料。
插入(insert)i: 从光标所在位置前面开始插入资料,光标後的资料随新增资料向後移动。I :从光标所在列的第一个非空白字元前面开始插入资料。
开始(open)o :在光标所在列下新增一列并进入输入模式。O: 在光标所在列上方新增一列并进入输入模式。
保存/退出在指令模式下键入:q,:q!,:wq或:x(注意:号),就会退出vi。其中:wq和:x是存盘退出,而:q是直接退 ...
mysql主从架构
前言Mysql是我们经常使用的关系型数据库,在实际使用中,我们会使用单数据库,也会使用各种集群技术。其中最常用的是主从集群。
主从分很多种,一主一丛、双主、一主多从、多主多从等。其中主数据库可读可写,从机只读不写。
本文主要介绍前两种,主写从读和双主互备。
而这些方案实现的原理,则是binlog复制。
Binlog复制Mysql有很多log,binlog是其中一种。当mysql执行了改动语句时,改动会被记录在binlog中,所以主从复制主要复制的就是这个binlog。
但具体来讲,Mysql主从复制涉及到三个线程:
1)主节点的log dump thread,给从库I/O线程传Binlog数据
2)从节点的I/O线程,会请求主库并将得到的Binlog写到本地的relay log中
3)从节点的SQL线程,会读取relay log中的日志,并解析成SQL语句进行同步
如下图所示:
前期准备针对主从架构,我们准备两台机,并各自安装mysql server,端口3306.
主机
从机
IP地址
192.168.1.150
192.168.1.113
用 ...