或许戈多永远不会出现,不必为此(执念)浪费大把时光;
可以向波卓一样去摔倒,去爬起,去忘却;
且听且看且从容,且停且忘且随风。
或许戈多永远不会出现,不必为此(执念)浪费大把时光;
可以向波卓一样去摔倒,去爬起,去忘却;
且听且看且从容,且停且忘且随风。
1 | 192.168.31.211 - vhost1 - 控制节点 |
由于官方镜像地址在国内访问不了,需要搭建本地镜像仓库,从网上找寻相关镜像文件下载并导入(见尾部 5.资源)
主机:test
1 | docker run --restart=always -d -p 15000:5000 -v /var/lib/registry:/var/lib/registry registry |
配置http访问(即不需要https)
1 | cat /etc/docker/daemon.json |
1 | { |
主机:vhost1, vhost2, vhost3
1 | cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf |
设置所需的 sysctl 参数,参数在重新启动后保持不变
1 | cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf |
应用 sysctl 参数而不重新启动
1 | sudo sysctl --system |
1 | cat <<EOF > /etc/yum.repos.d/kubernetes.repo |
1 | tar Cxzvf /usr/local containerd-1.6.15-linux-amd64.tar.gz |
1 | install -m 755 runc.amd64 /usr/local/sbin/runc |
1 | # ctr container list |
如果出现如下错误信息
1 | WARN[0000] runtime connect using default endpoints: [unix:///var/run/dockershim.sock unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead. |
执行修复
1 | crictl config runtime-endpoint unix:///run/containerd/containerd.sock |
1 | mkdir -p /opt/cni/bin |
1 | mkdir /etc/containerd |
1 | # vim /etc/containerd/config.toml # 修改如下 |
1 | [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] |
1 | vim /etc/containerd/config.toml # 修改如下 |
1 | [plugins."io.containerd.grpc.v1.cri"] |
1 | vim /etc/containerd/config.toml # 修改如下 |
1 | [plugins."io.containerd.grpc.v1.cri".registry] |
1 | systemctl restart containerd |
主机:vhost1
1 | kubeadm init --image-repository=registry.aliyuncs.com/google_containers |
1 | [init] Using Kubernetes version: v1.26.0 |
主机:vhost1
下载calico.yaml
1 | export KUBECONFIG=/etc/kubernetes/admin.conf |
主机:vhost2, vhost3
1 | # kubeadm join 192.168.31.211:6443 --token 9pk20q.rk8jrrx5valnw0di --discovery-token-ca-cert-hash sha256:0c2746c2e25ebb8543c5e905454a54887562bafacf69465fc7a83d6159bf3a1c |
1 | [preflight] Running pre-flight checks |
主机:vhost1
1 | kubectl get nodes |
1 | NAME STATUS ROLES AGE VERSION |
1 | kubeadm token list |
默认情况下,令牌会在 24 小时后过期。如果要在当前令牌过期后将节点加入集群, 则可以通过在控制平面节点上运行以下命令来创建新令牌:
1 | kubeadm token create |
如果你没有 –discovery-token-ca-cert-hash 的值,则可以通过在控制平面节点上执行以下命令链来获取它:
1 | openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' |
1 | # 重置 |
模式扫描和处理的语言,一般可作为格式化工具。
awk [OPTIONS] 'script' fileawk [OPTIONS] -f scriptfile file
1 | cat data.txt |
1 | Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name |
以上是文件原始内容
1 | awk '{print $1, $4, $5}' data.txt |
该命令作用是打印第1、4、5列,包含标题(即不区分是否标题)
1 | Proto Local Address |
1 | awk '{printf "%-10s %-22s %-32s \n", $1, $4, $5}' data.txt |
该命令作用同上一条,只是进行了格式化
1 | Proto Local Address |
不打印标题(即不打印第一行)
1 | awk 'NR!=1 {printf "%-10s %-22s %-32s \n", $1, $4, $5}' data.txt |
内置变量
1 | $0 当前记录(这个变量中存放着整个行的内容) |
1 | awk '$1=="tcp" && $6=="ESTABLISHED" || NR==1 {printf "%-10s %-22s %-22s %-16s %-30s \n", $1, $4, $5, $6, $7}' data.txt |
该命令作用为,匹配第1列为”tcp”,并且第6列为”ESTABLISHED”,或者行号为1的行(即包含标题),然后进行格式化输出
1 | Proto Local Address Foreign Address |
高级用法和原理见资料
一个非交互式、面向文本流的编辑器,能对文本进行匹配、过滤和转换
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
1 | cat data.txt |
1 | unix macos macos unix unix unix windows windows unix unix |
以上是文件原始内容
1 | sed 's/unix/linux/g' data.txt |
该命令作用是使用指令s(格式为:s/pattern/replacement/flags)匹配每行的unix,将其替换为linux,g表示对每行的所有匹配进行替换,输出如下:
1 | linux macos macos linux linux linux windows windows linux linux |
上一个例子的操作不会影响到原文件,只是默认进行打印输出
1 | sed -i 's/unix/linux/g' data.txt |
该命令添加了-i选项,表示直接对原文件进行操作
1 | sed -i.bak 's/unix/linux/g' data.txt |
该命令添加了-i并且紧跟.bak(可以是其他任意字符串作为后缀比如temp、-save等),这会使得产生一个相应名字的备份文件,并对源文件进行操作
1 | ls -l |
1 | data.txt |
1 | cat data.txt |
1 | unix macos macos unix unix unix windows windows unix unix |
1 | sed '/macos/p' data.txt |
1 | unix macos macos unix unix unix windows windows unix unix |
该命令会将存在匹配(macos)的行进行打印(p)
这里输出了3行,第1行是原始第1行,第2行是由于第1行的匹配进行的打印输出,第3行为原始第3行
可以指定-n选项抑制原始行数据的打印,如下:
1 | sed -n '/macos/p' data.txt |
1 | unix macos macos unix unix unix windows windows unix unix |
1 | cat data.txt |
1 | unix macos macos unix unix unix windows windows unix unix |
1 | sed '2d' data.txt |
该命令将指定的第2行进行删除操作,输入如下:
1 | unix macos macos unix unix unix windows windows unix unix |
能够在多层级目录中递归查找文件的工具
find [path...] [expression]
[path] - 指定递归查找的根目录(默认当前目录)
[expression] 可以由3部分组成:
options - 选项(相当于全局配置)
tests - 测试(即判断指定条件是否满足)
actions - 动作(即找到符合条件的文件之后,对每个文件进行的操作)(默认-print)
find . -mindepth 2 -name '*.txt' -size +1M -exec ls -sailh {} \;
path: .
expression.options: -mindepth 2
expression.tests: -name '*.txt' -size +1M
expression.actions: -exec ls -sailh {} \;
{} 表示查找到的每个文件, \; 表示 -exec 的结束
该示例表示的意思是,从当前目录开始递归查找,文件路径最小深度为2(即>=2),文件名以 .txt 结尾,并且文件大小大于1M,查找完之后的动作为使用 ls -sailh 命令将其展示出来
man findHTTP服务器基准测试工具
1 | ab [ -A auth-username:password ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] |
1 | -A auth-username:password |
不同版本参数不完全相同,具体见版本的帮助文档 ab -h
1 | ab -n 100 -c 10 'https://publib.boulder.ibm.com/httpserv/manual70/programs/ab.html' |
1 | This is ApacheBench, Version 2.3 <$Revision: 1430300 $> |
1 | <!-- Spring Data Elasticsearch --> |
1 | package com.yeshimin.ysmspace.config; |
1 | package com.yeshimin.ysmspace.model.elasticsearch; |
1 | package com.yeshimin.ysmspace.dal.elasticsearch; |
遵循spring data规则
示例:
1 |
|
利用RabbitMQ的死信队列机制实现订单超时自动取消;
具体为下单后发送设置了TTL的订单消息到队列A,当超时未消费时,消息被转发到对应的死信队列B,监听队列B的消费者收到消息对其进行处理;
消费者对订单进行取消操作需保证幂等,因为可能订单已经被用户主动取消;
1 | <!-- Spring RabbitMQ --> |
1 | spring: |
1 | package com.yeshimin.ysmspace.config; |
1 | package com.yeshimin.ysmspace.rabbitmq; |
1 |
|
1 | package com.yeshimin.ysmspace.rabbitmq; |
主机:vhost4, vhost5, vhost6
系统:CentOS7
vhost4: MySQL.slave
vhost5: MySQL.master
vhost6: MySQL.slave
MySQL: v5.7.36
cat /etc/my.cnf
1 | ...略 |
1 | SHOW VARIABLES LIKE '%skip_networking%'; |
1 | systemctl restart mysqld |
1 | CREATE USER 'repl'@'%' IDENTIFIED BY '密码'; |
1 | FLUSH TABLES WITH READ LOCK; # 锁定只读 |
1 | mysqldump -uroot -p --all-databases --master-data > dbdump.db |
在master上执行UNLOCK TABLES;(对应上面的FLUSH TABLES WITH READ LOCK;)
cat /etc/my.cnf
两个slave的server-id分别配置为2和3
1 | ...略 |
MASTER_LOG_FILE和MASTER_LOG_POST参数为master上binary log的坐标
1 | CHANGE MASTER TO |
1.导入master的数据
2.start slave
Windows系统的HyperV中的虚拟机,在正常关机、开机后不能正确(符合预期地)保存/恢复虚拟机状态;
具体表现在CentOS7 Linux虚拟机中prometheus服务启动出错(详细错误未记录);
在尝试通过HyperV的配置使达到预期未果后,转而使用其他方式;
只要使虚拟机经历正常关机和开机就能使结果符合预期;
最终使用Windows PowerShell自动化脚本的方式。
1 | # Self-elevate the script if required |
1 | # Self-elevate the script if required |
Win + r 输入 gpedit.msc
计算机配置 -> Windows设置 -> 脚本(启动/关机) -> 【启动】 -> PowerShell脚本 -> 添加 -> 脚本名(配置为StartHyperVMs.p1的路径)
计算机配置 -> Windows设置 -> 脚本(启动/关机) -> 【关机】 -> PowerShell脚本 -> 添加 -> 脚本名(配置为StopHyperVMs.p1的路径)