Sunday Blog

人生是一场刻意练习

Ubuntu UFW防火墙启用NAT共享上网

Ufw firewall enable nat shared Internet access

环境信息 内网 网卡接口: ens160 网段: 192.168.77.0/24 IP: 192.168.77.1 外网 网卡接口: ens160 打开内核转发 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p 启动nat转发测试 非持久化 # 启动 # 适用动态IP 自动转成网卡I

sed引用变量及追加文件内容到文件首部

Sed Head File

只能将昨天的日志文件内容追加到今天的日志文件的首部,从第 1 行后开始,而不是完全从第 1 行开始。 # 表示将 yesterday.log 文件中的内容添加到 today 文件中,且从第一行

Namespace Terminating

Namespace Terminating

问题 删除 namespace 失败,一直处于 terminating 状态。 [root@ha ~]# kubectl get ns NAME STATUS AGE default Active 4d kube-system Active 4d local Active 3d6h monitoring Terminating 19m 排查 检查该 namespace 中是否还存在未被清理的资源 namespace=monitoring kubectl api-resources --verbs=list --namespaced -o name | xargs -n 1 kubectl get --show-kind --ignore-not-found

Kubernetes监控kube-prometheus使用

Kube Prometheus

kube-prometheus github 部署 git clone https://github.com/prometheus-operator/kube-prometheus.git cd kube-prometheus git checkout v0.11.0 # 切换kubernetes兼容版本 首先创建需要的命名空间和 CRDs,等待它们可用后再创建其余资源 kubectl apply --server-side -f manifests/setup kubectl wait \ --for condition=Established

Kubernetes EFK日志收集

Kubernetes Es Logging

上传镜像(可选) export tag=7.17.3 images=( docker.elastic.co/elasticsearch/elasticsearch:${tag} docker.elastic.co/kibana/kibana:${tag} docker.elastic.co/beats/filebeat:${tag} ) # 上传至harhar export https_proxy="192.168.10.250:7890" # 代理 for image in ${images[@]}; do skopeo copy docker://${image} docker://registry.sundayhk.com/elastic/${image#*/}; done 部署Elasticsearch helm及添加storageC

RocketMQ deleteSubscriptionGroup 不删除 consumer offset 解决

Rocketmq Delete Consumer Group

https://github.com/apache/rocketmq/issues/3660 使用下面命令,删除订阅组成功但在rocketmq-dashboard 还能看到订阅组信息,只不过会显示1970-01-01 08:00:00,

SSH 一次执行多个命令

Ssh Multiple Commands

分号 ssh User@Host 'source /etc/profile; date' 写EOF ssh User@Host /bin/bash << EOF date ls -la uptime EOF 使用脚本 echo 'date' > 1.sh ssh User@Host bash -s < 1.sh

Kubernetes Note

Kubernetes Note

微服务的容器服务都应该使用 StatefulSet 而不是 Deployment 使用 preStop 和 readinessProbe 保证服务平滑更新不中断 通常对于常规分布式微服务业务系统来说,StatefulSet 的顺序性保证

Kubernetes 常用命令

Kubernetes Command

# 缩容 kubectl scale -n kube-system deployment coredns --replicas=1 # 设置污点 kubectl taint node master node-role.kubernetes.io/master="":NoSchedule # 取消污点 kubectl taint node master1 node-role.kubernetes.io/master- deployment daemonset 回滚 kubectl rollout history daemonset -n kube-system fluentd-elasticsearch kubectl rollout undo --to-revision=1 daemonset -n kube-system fluentd-elasticsearch

Python多线程join( )使用

python Multithreading Join

Python多线程与多进程中join()方法的效果是相同的。 join():在子线程完成运行之前,这个子线程的父线程将一直被阻塞。 Daemon

Python中的描述器、反射

Python Descriptor

描述器 什么是描述器? 一个类中定义了如下一个或多个魔术方法,这个类的实例就是描述器: __get__,__set__,__delete__ 通常需

Python 装饰式和偏函数

Python Decorator and Partial

装饰器 要讲清楚装饰器,首先要知道一些前置概念。下文涉及到这些概念的地方,会展开讲述。 什么是装饰器? 装饰器是一种AOP(面向切面编程)的设计模

Python 装饰器

Python Decorator

无参装饰器 import datetime import time import functools def logger(fn): @functools.wraps(fn) #wrap解决文档、名称问题 def wrapper(*args,**kwargs): """+++Wrapper Function+++""" start=datetime.datetime.now() ret = fn(*args,**kwargs) #add delta=(datetime.datetime.now()-start).total_seconds() print(fn.__name__,delta) return ret return wrapper @logger # add=logger(add) === add=wrapper def add(x,y): """Add Function""" time.sleep(1) return x+y print(add(4,5)) print(add.__name__,add.__doc__) add 1.004984 9 add Add Function 带参装饰器

Python shutil模块

Python Shutil

文件拷贝:使用打开2个文件对象,源文件读取内容,写入目标文件中来完成拷贝过程。但是这样丢失stat数据信息、权限等) Python提供了一个方

正则表达式

Regex

基本语法 代码 说明 . 匹配除换行符外任意一个字符 [abc] 字符集合,匹配集合中包含的任意一个字符 [^abc] 字符集合,匹配非集合内的任意一个字符 [a-z] 字符集合范围,匹