《飘向北方》-- namewee
王:
漂向北方,别问我家乡,高耸古老的城墙,挡不住忧伤;我漂向北方,家人是否无恙,肩上沉重的行囊,盛满了惆怅。
黄:有人说他在老家欠了一堆钱,想要避避风头,有人说他练就了一身武艺,却没机会展露,有人失去了自我,手足无措四处漂流,有人为了梦想为了三餐为养家糊口。他住在燕郊区,残破的求职公寓,拥挤的大楼里,堆满陌生人都来自外地,他埋头写着履历,怀抱着多少憧憬,往返在九三零号公路,内心盼着奇迹。不听也不想,不敢回头望的遗憾,扛下了梦想,要毅然决然去流浪。卸下了自尊、光环,过去多风光,就算再不堪、败仗,也不能投降。再见了南方,眺望最美丽的家乡,椰子树摇晃,梦境倒映着的幻象。雾霾太猖狂,不散,都看不清前方。
王:漂向北方,别问我家乡,高耸古老的城墙,挡不住忧伤;我漂向北方,家人是否无恙,肩上沉重的行囊,盛满了惆怅。也是最后寄望,回不去的远方~Oh~
黄:空气太脏、太浑浊,他说不喜欢,车太混乱、太匆忙,他还不习惯。人行道一双有一双,斜视冷漠的眼光,他经常自将己灌醉,强迫融入,这大染缸。走着脚步蹒跚,二锅头在摇晃,失意的人啊偶尔醉倒在那胡同陋巷。咀嚼爆肚涮羊,手中盛着一 ...
kubeadm介绍
前言我们都知道,k8s中有三位大哥:kubelet, kubeadm, kubectl.
其中:
kubelet是服务,用来调用下层的container管理器,从而对底层容器进行管理。
kubectl是API,供我们调用,键入命令对k8s资源进行管理。
kubeadm是管理器,我们可以使用它进行k8s节点的管理。
基于kubeadm,我们最常用的功能有三个:
init:初始化k8s节点
join:将worker节点加入到k8s集群
reset:尽最大努力还原init或者join对集群的影响
那么,接下来就对这三个功能进行介绍。
kubeadm init用途运行此命令来搭建 Kubernetes 控制平面节点。
过程“init” 命令执行以下阶段:
1 预加载(preflight), 检查环境。
2 生成CA证书。
3 生成kubeconfig文件,以便kubelet和kubectl连接到API服务器,并生成一个admin.conf,便于管理。
4 为 API 服务器、控制器管理器和调度器生成静态 Pod 的清单文件。
5 对控制平面节点应用标签和污点标记以便不会在它 ...
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