JOBCHER BLOG
苏州旅行
苏州旅行 新冠肺炎 COVID-19 警告 苏州,古称吴,现简称苏,是中华人民共和国江苏省东南部的一个地级市,位于长江三角洲和太湖平原的中心地带,著名的鱼米之乡、状元之乡、院士之乡、经济重镇、历史文化名城,自古与杭州共享有“上有天堂、下有苏杭”美誉。 苏州景点 day1 金鸡湖 苏州金鸡湖,是国家5A级景区,但却是免费开放的。湖东与湖西高楼林立,展现了苏州现代的一面。夜晚,灯光璀璨,如群星般夺目;霓虹闪烁,如银河般绚烂~ 金鸡湖十景 苏州中心 东方之门 音乐喷泉 金鸡湖大桥 文化艺术中心 月光码头 诚品书店 国金中心 望湖角 李公堤 day2 苏州博物馆 地址:姑苏区东北街204号 交通:乘坐游1、游2、游5、55、178、202、309、313、518、529路等到苏州博物馆 门票:免费(可在官网提前预约) 开放时间:每星期二至星期日- 9:00~17:00(16:00停止入馆) ◆建议用时:2-3小时 拙政园 拙政园和苏州博物馆紧临,两者之间步行不会超过3分钟,而平江路是在拙政园的南门沿着门前的东北街往东走,大约在150米处右转过桥就是了,因此可以把这三处安排在同一天,建议游览顺序是拙政园—苏州博物馆—平江路。 淡季(1、2、3、6、11、12月):70元 旺季(4、5、7、8、9、10月):90元 day3 虎丘 地址:姑苏区山塘街虎丘山门内8号 交通:南门入口:146、游1、游2路虎丘首末站;北门入口:32、快线3号虎丘北门站 门票:淡季:60.00元 旺季:80.00元 开放时间: 7:30-17:30/17:00 建议用时:2-3小时 苏州美食 饭店 苏帮菜——浓油赤酱里的姑苏风情 鲃肺汤是取生长于太湖一带的鲃鱼,将其肉与肝加入火腿、香菇、笋片等辅料,在鸡汤中共同熬煮,汤鲜味美,是一道不可多得的汤品。 酱方是采用上乘猪五花为原料,经 24 小时腌制后,加入卤汁炖煮 3 小时而成。肉的色泽鲜亮诱人,入口外皮 Q 弹、肉质紧实。 响油鳝糊是以将新鲜鳝鱼切成段,加酱油等佐料爆炒。因鳝糊上桌时油滋滋作响,而得名“响油鳝糊”。菜色深红,口味鲜甜,油而不腻。 樱桃肉因肉形状及色泽极似樱桃而得名,是将优质的五花肉切成小块,以文火炖煮七八小时而成。肥而不腻,满口精华。 松鼠鳜鱼是将鳜鱼在油锅内炸至金黄,再淋上由番茄酱等熬制的酱汁而成。因炸开的鱼肉形似松鼠而得名,入口酥脆酸甜。 碧螺虾仁是将新鲜虾仁配以碧螺春为佐料烹制而成,色泽清淡雅致,虾肉饱满 Q 弹,鲜甜中夹杂了茶叶的香味。 推荐餐厅: 珍珠饭店:蚌肉金花菜 吴门人家:吴门人家6:30-9:00供应早茶,提供糖粥、豆腐花、苏式面、馄饨等各类苏式点心,价格为20元/人 得月楼:松鼠桂鱼、响油鳝糊、清炒虾仁、油爆虾、蟹粉豆腐、狮子头等 松鹤楼:店内供应的菜品与得月楼也是大同小异 小吃 苏式汤面——老苏州的早餐 推荐餐厅: 同得兴:枫镇大肉面 孙盛兴奥灶面馆: 奥灶鸭和爆鱼的浇头 韦复兴: 阳春面 苏式点心——吴侬软语般的甜糯滋味 推荐餐厅: 随柳居:糖粥、泡泡小馄饨 新梅华·茶点餐厅:糖芋艿 老苏州大客堂·特色小吃:响油鳝糊、生煎、锅贴 生煎——一口爆汁的苏州人气美食 推荐餐厅: 哑巴生煎:泡泡小馄饨、牛肉粉丝汤 大阿二生煎:两面黄、生煎 馄饨——别具风味的平凡美食 推荐餐厅: 绿杨馄饨:鲜肉、三鲜、鸡丝、鸡汁虾肉、荠菜、香菇馄饨 熙盛源:无锡小笼、红汤馄饨、开洋馄饨、蟹粉小笼 烧饼豆浆——寻常美食中的苏州味道 推荐餐厅: 王氏林记烧饼(双塔菜场店):大饼油条、豆浆 阊门姚记豆浆:24 小时通宵营业,咸豆浆、荷叶包美人 糕团——苏州风俗必备美食 推荐餐厅: 黄天源:定胜糕、猪油糕、薄荷糕 明月楼(糕团店):桂花糕、炒肉团子 长发西饼:鲜肉月饼 胥城鲜肉月饼:鲜肉月饼
JOBCHER BLOG
懒人烧排骨
【主料】 精排骨(500 克) 【辅料】 食用面碱(约 2 克) 柠檬(半个) 生姜(1 小块) 小葱(2 根) 八角(1 颗) 桂皮(1 小块) 香叶(半片) 冰糖(约 50 克) 可乐(1000 克) 【调味料】 食用盐(适量) 料酒(适量) 生抽酱油(20 克)
k8s CNI 问题 连接认证失效
k8s CNI 问题 连接认证失效
k8s CNI 问题 连接认证失效 删除 calico 换成 flannel 后,容器没有正常启动 network: error getting ClusterInformation: connection is unauthorized: Unauthorized] 解决问题 删除掉 /etc/cni/net.d/ 目录下的 calico 配置文件即可。 要删除所有节点的配置文件 1sudo rm -rf /etc/cni/net.d/*calico* 不要重复网络插件
k8s.gcr.io国内无法连接解决方法
k8s.gcr.io国内无法连接解决方法
k8s.gcr.io 国内无法连接解决方法 Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 这个一看知道什么原因了,应该 GFW!那好吧,只能给 docker 加个代理了。 解决问题 添加 mirror 站点 1registry.cn-hangzhou.aliyuncs.com/google_containers
JOBCHER BLOG
Golang 初识(安装、使用)
Golang 初识(安装、使用) Go 导学 go 语言由 google 公司推出。 运行速度快,简单易学 适合区块链开发 拥有丰富指令 可以直接包含 C 语言 语言层面支持并发 Go 方向 网络编程 服务器编程 区块链开发 环境安装 安装环境 安装包下载 https://golang.google.cn/dl/ windows 部署 1wget https://golang.google.cn/dl/go1.19.1.windows-amd64.msi 2# 直接安装 GOPATH 设置 在环境变量 PATH 上直接配置安装地址 编写第一个程序 1package main 2 3import "fmt" 4 5func main() { 6 fmt.Println("Hello World!") 7}
JOBCHER BLOG
headscale 部署使用
Headscale Tailscale 的控制服务器是不开源的,而且对免费用户有诸多限制,这是人家的摇钱树,可以理解。好在目前有一款开源的实现叫 Headscale,这也是唯一的一款,希望能发展壮大。 Headscale 由欧洲航天局的 Juan Font 使用 Go 语言开发,在 BSD 许可下发布,实现了 Tailscale 控制服务器的所有主要功能,可以部署在企业内部,没有任何设备数量的限制,且所有的网络流量都由自己控制。 Headscale 部署 我决定使用docker-compose进行部署 创建存储 1#!/bin/bash 2mkdir -p /opt/headscale 3mkdir -p ./config 4touch ./config/db.sqlite 5curl https://raw.githubusercontent.com/juanfont/headscale/main/config-example.yaml -o ./config/config.yaml 运行 docker-compose 文件 创建 docker-compose.yaml 1version: "3" 2services: 3 headscale: 4 image: headscale/headscale:latest 5 volumes: 6 - ./config:/etc/headscale/ 7 - ./data:/var/lib/headscale 8 ports: 9 - 8080:8080 10 - 9090:9090 11 - 50443:50443 12 command: headscale serve 13 restart: unless-stopped 运行
清理Docker容器日志
清理Docker容器日志
清理 Docker 容器日志 如果 docker 容器正在运行,那么使用rm -rf方式删除日志后,通过df -h会发现磁盘空间并没有释放。原因是在 Linux 或者 Unix 系统中,通过rm -rf或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink)。如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。正确姿势是cat /dev/null > *-json.log,当然你也可以通过rm -rf删除后重启 docker。 日志清理脚本 clean_docker_log.sh 1#!/bin/sh 2 3echo "======== start clean docker containers logs ========" 4 5logs=$(find /var/lib/docker/containers/ -name *-json.log) 6 7for log in $logs 8 do 9 echo "clean logs : $log" 10 cat /dev/null > $log 11 done 12 13echo "======== end clean docker containers logs ========" chmod +x clean_docker_log.sh && ./clean_docker_log.sh 设置 Docker 容器日志大小 设置一个容器服务的日志大小上限
JOBCHER BLOG
羊了个羊小程序 破解通关
注意此教程需要通过电脑端完成 操作步骤 1、微信打开羊了个羊小程序,玩第一关 2、进入当前登录的微信数据文件夹 微信左下角 -> 设置 -> 文件管理 -> 打开文件夹 打开后进入当前登录的微信数据文件夹 3、进入当前登录微信数据文件夹后,依次进入 \Applet\wx141bfb9b73c970a9\usr\gamecaches\resources 注意 wx141bfb9b73c970a9 文件名可能不同,但以 a9 结尾 4、修改游戏配置文件 在此文件夹下,有很多 json 文件,找到默认排序的第三个,大小 2k 的文件 我的电脑是 16632884479734.json 文件,用记事本打开,清空里面内容,将 new.txt 文件中的代码复制进此 json 文件,保存关闭 1[1,0,0,[["cc.JsonAsset",["_name","json"],1]],[[0,0,1,3]],[[0,"levelConfigData",{"dailyLevel":[[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001]],"topicLevel":[[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017]]}]],0,0,[],[],[]] 之后打开游戏,仅需要完成 4 次第一关九宫格样式即可加入羊群!
JOBCHER BLOG
Featured Post without Image
A sample for showing how carousel handle featured posts that without images.
K8S 问题排查:cgroup 内存泄露问题
K8S 问题排查:cgroup 内存泄露问题
K8S 问题排查:cgroup 内存泄露问题 unable to ensure pod container exists: failed to create container for [kubepods besteffort pod5f26dae8-0421-4eab-a3f7-aa51c6848e2b] : mkdir /sys/fs/cgroup/memory/kubepods/besteffort/pod5f26dae8-0421-4eab-a3f7-aa51c6848e2b: cannot allocate memory 查看 linux 内核 1cat /proc/version 2uname -a 可以发现 linux 版本是 3.0 版本 原因 cgroup 的 kmem account 特性在 Linux 3.x 内核上有内存泄露问题,然后k8s用了这个特性,导致后面创建不出新的pod来了 解决方法 1# 修改/etc/default/grub 为 2GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet cgroup.memory=nokmem" 3#加上了 cgroup.memory=nokmem 4# 生成配置 5/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg 6 7# 重启机器 8reboot 验证 1cat /sys/fs/cgroup/memory/kubepods/burstable/pod*/*/memory.kmem.slabinfo 输出信息 1cat: /sys/fs/cgroup/memory/kubepods/burstable/pod0fe273ca-42e0-4223-9fe8-16d8dd1774e9/0fdd5d9c16929fd600dbdf313b5c3ebabad912dc0cb076ed6e7799e028b31481/memory.
JOBCHER BLOG
RocketMQ k8s部署 4主4从集群
RocketMQ k8s 部署 4 主 4 从集群 使用 NFS 配置 StatefulSet 的动态持久化存储 安装 NFS 服务端 1sudo apt update 2sudo apt install nfs-kernel-server nfs-common 安装 NFS 客户端 所有的节点都得执行 sudo apt install nfs-common -y 创建目录 1mkdir -p /data/storage/k8s/rocketmq 使用 NFS 作为StatefulSet持久化存储的操作记录,分别需要创建nfs-provisioner的rbac、storageclass、nfs-client-provisioner和statefulset的pod 创建 nfs 的 rbac 1--- 2apiVersion: v1 3kind: ServiceAccount 4metadata: 5 name: nfs-provisioner 6 namespace: sanjiang 7--- 8kind: ClusterRole 9apiVersion: rbac.authorization.k8s.io/v1 10metadata: 11 name: nfs-provisioner-runner 12 namespace: sanjiang 13rules: 14 - apiGroups: [""] 15 resources: ["persistentvolumes"] 16 verbs: ["get", "list", "watch", "create", "delete"] 17 - apiGroups: [""] 18 resources: ["persistentvolumeclaims"] 19 verbs: ["get", "list", "watch", "update"] 20 - apiGroups: ["storage.
contained 安装及使用
contained 安装及使用
contained 安装及使用 containerd 是一个行业标准的容器运行时,强调简单性、健壮性和可移植性。它可作为 Linux 和 Windows 的守护进程使用,可以管理其主机系统的完整容器生命周期:图像传输和存储、容器执行和监督、低级存储和网络附件等。 containerd is a member of CNCF with graduated status. 早在 2016 年 3 月,Docker 1.11的Docker Engine里就包含了containerd,而现在则是把containerd从Docker Engine里彻底剥离出来,作为一个独立的开源项目独立发展,目标是提供一个更加开放、稳定的容器运行基础设施。和原先包含在 Docker Engine 里containerd相比,独立的containerd将具有更多的功能,可以涵盖整个容器运行时管理的所有需求。 containerd并不是直接面向最终用户的,而是主要用于集成到更上层的系统里,比如Swarm, Kubernetes, Mesos等容器编排系统。 containerd以Daemon的形式运行在系统上,通过暴露底层的gRPC API,上层系统可以通过这些API管理机器上的容器。 每个containerd只负责一台机器,Pull 镜像,对容器的操作(启动、停止等),网络,存储都是由 containerd 完成。具体运行容器由runC负责,实际上只要是符合OCI规范的容器都可以支持。 对于容器编排服务来说,运行时只需要使用containerd+runC,更加轻量,容易管理。 5.独立之后containerd的特性演进可以和Docker Engine分开,专注容器运行时管理,可以更稳定。 安装 centos 1yum install -y containerd.io ubuntu 1apt install -y containerd.io 设置开机自启 1systemctl enable containerd 2systemctl start containerd 3systemctl status containerd 验证 1ctr version ctr 命令 命令 作用 plugins, plugin 提供有关容器插件的信息 version 打印客户端和服务器版本 containers, c, container 管理容器 content 管理内容 events, event 显示容器事件 images, image, i 管理图像 leases 管理租约 namespaces, namespace, ns 管理租命名空间 pprof 为 containerd 提供 golang pprof 输出 run 运行一个容器 snapshots, snapshot 管理快照 tasks, t, task 管理任务 install 安装一个新包 oci OCI 工具 shim 直接与 shim 交互 help, h 显示命令列表或一个命令的帮助