podman网络缺失
前言podman由于没有daemon,使用的时候会出现network问题。
今天打算跑一个busybox时,发现报错:
12345root@home:~/manifests# podman run -it busyboxERRO[0000] error loading cached network config: network "podman" not found in CNI cacheWARN[0000] falling back to loading from existing plugins on diskERRO[0000] Error tearing down partially created network namespace for container 25909b12b14aa8a8d1c1934e6e58b5cb55ca0e4e9af45fdff359620f3bc290ce: CNI network "podman" not foundError: error configuring network namespace ...
git fetch和git pull对比
情景重现你:面试官您好,我是xxx,毕业于xxx学校,工作xxx年,精通各种git命令。
面试官:您好您好,我问个常见的问题考察一下您的技术水平哈。请问,git pull和git fetch有什么区别,二者都在什么情况下使用?
你:emmmm…母鸡喔
面试官(微笑):回家等消息吧,有结果通知你~
二者区分git fetch首先我们来看一下git fetch的定义:
123456git fetch only downloads latest changes into the local repository. It downloads fresh changes that other developers have pushed to the remote repository since the late fetch and allows you to review and merge manually at a later time using git merge. Because it doesn't change your working directory or th ...
《高山低谷》-- 林奕匡
站在树林内,就如没氧气,在夕阳下,寂寥吧,没权利见你。早知高的山、低的谷,将你我分隔两地,失去人情味。你那贵族游戏,我的街角游记,天真到信真心,太儿戏。
你快乐过生活,我拼命去生存,几多人位于山之巅俯瞰我的疲倦。渴望被成全,努力做人谁怕气喘,但那终点,挂在那天边。
你界定了生活,我侮辱了生存,只适宜滞于山之谷整理我的凌乱。渴望大团圆,脚下路程难以削短,未见终点,也未见恩典,我与你极远。
越望,越无望,未来没有我,在断崖下,尽头吧,乐园未有过。仿佛天一黑天一光挥发了一句再会,只见人下堕。快慰继续传播,你都不慰问我,区分到太清楚,太严苛。
你快乐过生活,我拼命去生存,几多人位于山之巅俯瞰我的疲倦。渴望被成全,努力做人谁怕气喘,但那终点,挂在那天边。
你界定了生活,我侮辱了生存,只适宜滞于山之谷整理我的凌乱。渴望大团圆,脚下路程难以削短,未见终点,也未见恩典,我与你极远。
我却尚要生存,偷偷存活于山之谷等到某天魂断。你继续盘旋,我继续埋藏我爱恋,没有终点,永没有终点,那永远极远。
ruby gem timed out解决
前言今天在折腾vagrant的时候,发现当我安装vagrant时,需要一些ruby插件。
如果我们没有设置正确的源,就会报time out的错误。
12ERROR: While executing gem ... (Gem::RemoteFetcher::UnknownHostError) timed out (https://api.rubygems.org/latest_specs.4.8.gz)
解决可以使用国内源。
12gem sources --remove https://rubygems.org/gem sources -a https://gems.ruby-china.com/
就可以了。
鸣谢ruby gems中文官网
Ruby Gem Timeout【超时】问题的解决_Joel__Li的博客-CSDN博客
《飘向北方》-- 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的此类文件都是可以的。
