jobcher

jobcher

欢迎关注

JOBCHER BLOG
Kubernetes — 更新证书
背景 使用 kubeadm 安装 kubernetes 集群非常方便,但是也有一个比较烦人的问题就是默认的证书有效期只有一年时间,所以需要考虑证书升级的问题 检查证书 由 kubeadm 生成的客户端证书默认只有一年有效期,我们可以通过 check-expiration 命令来检查证书是否过期: 1kubeadm alpha certs check-expiration 该命令显示 /etc/kubernetes/pki 文件夹中的客户端证书以及 kubeadm 使用的 KUBECONFIG 文件中嵌入的客户端证书的到期时间/剩余时间。 手动更新 kubeadm alpha certs renew 这个命令用 CA(或者 front-proxy-CA )证书和存储在 /etc/kubernetes/pki 中的密钥执行更新。 高可用的集群,这个命令需要在所有控制面板节点上执行 具体执行 接下来我们来更新我们的集群证书,下面的操作都是在 master 节点上进行 备份节点 1$ mkdir /etc/kubernetes.bak 2$ cp -r /etc/kubernetes/pki/ /etc/kubernetes.bak 3$ cp /etc/kubernetes/*.conf /etc/kubernetes.bak 备份 etcd 数据目录 1$ cp -r /var/lib/etcd /var/lib/etcd.bak 执行更新证书的命令 1kubeadm alpha certs renew all --config=kubeadm.yaml 检查更新 1kubeadm alpha certs check-expiration 更新下 kubeconfig 文件 1kubeadm init phase kubeconfig all --config kubeadm.
JOBCHER BLOG
Oracle Instant Client 安装配置实现远程连接oracle
背景 关于 Oracle 数据库一直是许多初学者比较头疼的地方,一方面受限于线上文档比较少,令一方面在企业中不得不接触和使用 Oracle 数据库,这篇文章是教大家如何通过配置 oracle client 来远程访问 Oracle 数据库。本文会通过 python3 和 cx_Oracle 来实现对 Oracle 的访问和增删改查 下载 oracle 客户端 官方地址下载 安装 下载并安装你的 oracle client,因为我连接的 11g oracle,所以下载 11.2 版本 1# 下载 2wget https://download.oracle.com/otn/linux/instantclient/11204/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 3# 安装 4rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 配置环境变量 1# 直接运行 2export ORACLE_HOME=/usr/lib/oracle/11.2/client64 3export ORABIN=/usr/lib/oracle/11.2/client64/bin 1# 编辑环境变量配置文件 2vim /etc/profile 1# 底部增加内容 2export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL 3export ORACLE_HOME=/usr/lib/oracle/11.2/client64 4export TNS_ADMIN=/usr/lib/oracle/11.2/client64 5export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib 6export ORABIN=/usr/lib/oracle/11.2/client64/bin 7PATH=$PATH:$ORABIN 8export PATH 9 10export PATH=$ORACLE_HOME:$PATH 11export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin 1# 刷新环境变量 2source /etc/profile 下载 cx_Oracle 1pip3 install cx_Oracle 创建 Oracle.
JOBCHER BLOG
shell功能脚本集合
28 合 1 多功能脚本 脚本说明: 多合一脚本,DD 系统,BBR,xray,TG 搭建等等·常用的各种脚本基本都有! 系统支持: CentOS6+ / Debian6+ / Ubuntu14+ 支持安装 BBR,搭建 KCPtun,ssr 多用户版 安装 V2ary,Tg 专用代理(Go 版),安装 Goflyway 小鸡性能测试,回程线路测试,云监控 傻瓜式一键 DD 包 一键开启默认 bbr Netflix 解锁检测 xray 安装 宝塔面板,闲蛋面板,x-ui 面板,WARP 一键配置 脚本特点: 目前网上的各个一键脚本基本都是只有 安装/启动/重启 等基础功能,对于小白来说还是不够简单方便。常用的各种脚本基本都有! 下载安装: 1bash <(curl -s -L https://git.io/JPj82) gfw_push 一键安装 脚本说明: 监测服务器 IP 是否被墙并推送至 Telegram 一键脚本 系统支持: CentOS6+ / Debian6+ / Ubuntu14+ 下载安装: 1bash <(curl -s -L git.io/JPjzm) 服务器测速 脚本说明: 服务器一键测速脚本 系统支持: CentOS7 / Debian7+ / Ubuntu14+ 下载安装: 1bash <(curl -s -L git.
JOBCHER BLOG
zlibary 无法下载 解决方案
zlibary 无法下载 因为 zlib 最近被封,导致现在通过正常方法下载不了电子书,但是不要慌,我们可以通过暗网进行下载~ 安装 brave 浏览器 官网下载 下载你需要的版本,这个下载浏览器很简单,我就不多说了 配置 tor 配置 编辑 tor 配置 使用 tor 浏览 zlibary tor 暗网版
JOBCHER BLOG
Logstash 自动重载配置文件
工作原理 检测到配置文件变化 通过停止所有输入停止当前pipline 用新的配置创建一个新的管道 检查配置文件语法是否正确 检查所有的输入和输出是否可以初始化 检查成功使用新的 pipeline 替换当前的pipeline 检查失败,使用旧的继续工作. 在重载过程中,jvm 没有重启. Logstash 自动重新加载配置 为了可以自动检测配置文件的变动和自动重新加载配置文件,需要在启动的时候使用以下命令: 1./bin/lagstash -f configfile.conf --config.reload.automatic 启动 Logstash 的时候使用--config.reload.automatic或-r选项来开启自动重载配置。 修改检测间隔时间 默认检测配置文件的间隔时间是3秒,可以通过以下命令改变 1--config.reload.interval <second> 如果 Logstash 已经运行并且没有开启自动重载,你可以强制 Logstash 重新载入配置文件并且重启管道通过发送一个 SIGHUP 信号。比如: 1kill -1 <pid> 其中是正在运行的 Logstash 的进程号。 注意!!! stdin输入插件不支持自动重启. syslog作为输入源,当重载配置文件时,会崩溃. 解决方法
JOBCHER BLOG
macOS 13 升级 软件失效
关于 macOS 13 软件失效 Warning: You are using macOS 13. We do not provide support for this pre-release version. You will encounter build failures with some formulae. Please create pull requests instead of asking for help on Homebrew’s GitHub, Twitter or any other official channels. You are responsible for resolving any issues you experience while you are running this pre-release version. 简单来说就是 macOS13 版本 暂时不提供技术支持 解决方法 升级完 macos13 之后发现了比较麻烦的问题,很多软件出现了不兼容,这真的很无奈,对于我们这些做 IT 的人来说,这是致命的。我以 git 软件举例,有以下几个方法。
JOBCHER BLOG
Nexus3 使用和部署
Nexus3 docker-compose 安装 创建外部存储 1mkdir -p /data/nexus 2chmod +777 -R /data/nexus 运行 docker-compose 1version: '3' 2services: 3 nexus3: 4 image: sonatype/nexus3:3.42.0 5 container_name: nexus3 6 ports: 7 - 8081:8081 8 - 5000:5000 9 volumes: 10 - /data/nexus:/nexus-data 11 environment: 12 - INSTALL4J_ADD_VM_PARAMS=-Xms1024m -Xmx1024m -XX:MaxDirectMemorySize=1024m -Djava.util.prefs.userRoot=/some-other-dir 13 restart: always 14 # 赋予外部root权限 15 privileged: true docker-compose up -d 运行 docker-compose
githubAction set-output弃用错误
githubAction set-output弃用错误
githubAction set-output 弃用错误 The set-output command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/ 原因 如果您有一个使用 设置输出的GitHub Actionsecho ::set-output key=value工作流程,您已经开始看到无用的弃用警告。这是修复它的方法。查看官方链接基本上得不到什么帮助! 修复方法 更新其它人的 action 方法 1将 @actions/core 提升到 1.10.0 修改自己的 aciton 方法 1run: echo "::set-output name=KEY::VALUE" 2## 改为 3run: echo "KEY=VALUE" >>$GITHUB_OUTPUT 建议:使用自己的方法 总结 平台经营者非常肆意妄为的修改自己的代码内容弃用功能,无限的权力滋生傲慢……我相信大部分开发这并没有注意到这个告警,知道流水线服务报错之后才会注意到,希望微软可以对能更加包容不同的开发者,尊重开发者社区。
JOBCHER BLOG
打开web 3.0的大门——IPFS使用
背景 有很多朋友问我什么是 web3.0,web3.0 似乎离我们非常远。有人会说 web3.0 是未来下一代的技术很有前景!但是举出一个具体的例子,似乎又非常困难。使用 web3.0 是一件非常高科技的事情。本文就是通过各 IPFS 给各位初学者和对 web3.0 感兴趣的人使用介绍,看完本篇文章,你就能进入 web3.0 的世界了~ IPFS 星际文件系统(InterPlanetary File System). IPFS 是一个分布式的 web, 点到点超媒体协议. 可以让我们的互联网速度更快, 更加安全, 并且更加开放. IPFS协议的目标是取代传统的互联网协议HTTP 下载安装 本文不会对技术做更深入探讨,只在应用层面上介绍 下载 官网 下载 windows 下载 MAC 安装 运行 .exe 文件开始安装,选择是要为您自己还是为计算机上的所有用户安装应用程序。点击下一步: 选择应用程序的安装位置。默认位置通常很好。点击下一步: 等待安装完成,然后单击完成: 您现在可以在状态栏中找到 IPFS 图标: 使用 打开软件 可以正常使用了!是不是很简单接下来浏览器直接查看 web3.0 站点 站点 我的 web3.0 blog: ipfs.jobcher.com 对标 youdTube 的视频网站: d.tube Orbit,QQ 在 IPFS 上的替代者: orbit.chat Akasha,对标 facebook,微信等社交工具:akasha.world
JOBCHER BLOG
Kubernetes — Rook云存储介绍和部署
Rook 云存储介绍和部署 Rook 将分布式存储软件转变为自我管理,自我缩放和自我修复的存储服务。它通过自动化部署,引导、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理来实现。 Rook 使用基础的云原生容器管理、调度和编排平台提供的功能来履行其职责。 Rook 利用扩展点深入融入云原生环境,为调度、生命周期管理、资源管理、安全性、监控和用户体验提供无缝体验。 部署 使用 helm 部署 1helm init -i jimmysong/kubernetes-helm-tiller:v2.8.1 2helm repo add rook-alpha https://charts.rook.io/alpha 3helm install rook-alpha/rook --name rook --namespace rook-system 直接使用 yaml 文件部署 1kubectl apply -f rook-operator.yaml 不论使用那种方式部署的 rook operator,都会在 rook-agent 中看到 rook-agent 用户无法列出集群中某些资源的错误,可以通过为 rook-agent 的分配 cluster-admin 权限临时解决,详见 Issue 1472。 使用如下 yaml 文件创建一个 ClusterRoleBinding 并应用到集群中。 1kind: ClusterRoleBinding 2apiVersion: rbac.authorization.k8s.io/v1beta1 3metadata: 4 name: rookagent-clusterrolebinding 5subjects: 6 - kind: ServiceAccount 7 name: rook-agent 8 namespace: rook-system 9roleRef: 10 kind: ClusterRole 11 name: cluster-admin 12 apiGroup: "" 部署 rook cluster 创建完 rook operator 后,我们再部署 rook cluster。
JOBCHER BLOG
Kubernetes — 基于K8S搭建Ceph分布式存储
基于 K8S 搭建 Ceph 分布式存储 前提 正常运行的多节点 K8S 集群,可以是两个节点也可以是更多。 每一个节点需要一个没有被分区的硬盘,最好大小一致不然会浪费。 没错其实就是一个要求,必须有集群才能进行容器管理,必须有硬盘才能做存储这些都是基础。 添加硬盘 主机 IP 磁盘 master01 10.12.12.51 SATA 20G master02 10.12.12.52 SATA 20G master03 10.12.12.53 SATA 20G worker01 10.12.12.54 SATA 20G worker02 10.12.12.55 SATA 20G 在 5 个节点都加 20g 存储 重启 k8s 节点 1kubectl cordon <节点> 2kubectl drain <节点> --ignore-daemonsets --delete-emptydir-data 3# 虚拟机重启后 4kubectl uncordon <节点> 查看新增存储 1fdisk -l 看到新增 20g 存储,不要格式化分区硬盘!!! 1Disk /dev/sdb: 20 GiB, 21474836480 bytes, 41943040 sectors 2Disk model: QEMU HARDDISK 3Units: sectors of 1 * 512 = 512 bytes 4Sector size (logical/physical): 512 bytes / 512 bytes 5I/O size (minimum/optimal): 512 bytes / 512 bytes ROOK 自动创建 Rook 是一个开源的cloud-native storage编排, 提供平台和框架;为各种存储解决方案提供平台、框架和支持,以便与云原生环境本地集成。 Rook 将存储软件转变为自我管理、自我扩展和自我修复的存储服务,它通过自动化部署、引导、配置、置备、扩展、升级、迁移、灾难恢复、监控和资源管理来实现此目的。 Rook 使用底层云本机容器管理、调度和编排平台提供的工具来实现它自身的功能。 Rook 目前支持Ceph、NFS、Minio Object Store和CockroachDB。 Rook 使用Kubernetes原语使Ceph存储系统能够在Kubernetes上运行。 下载 1git clone https://github.
JOBCHER BLOG
Kubernetes — 探针和生命周期
Kubernetes — 探针和生命周期 用于判断容器内应用程序是否已经启动。 存活(Liveness)探针 用于探测容器是否运行,如果探测失败,kubelet 会根据配置的重启策略进行相应的处理,若没有配置探针该返回值默认为 success 就绪(Readiness)探针 用于探测容器内的程序是否健康,如果返回值为 success,那么代表这个容器已经完全启动,并且程序已经是可以接受流量的状态 启动(Startup)探针 用于探测容器是否启动,如果配置了 startup 就会先禁止其他探测,直到它成功,成功后将不在运行探测 Pod 检测方式 ExecAction:在容器执行一个命令,返回值为 0,则认为容器健康 TCPSocketAction:通过 TCP 连接检查容器是否联通,通的话,则认为容器正常 HTTPGetAction:通过应用程序暴露的 API 地址来检查程序是否正常的,如果状态码为 200-400 之间,则认为容器健康 gRPCAction:通过 gRPC 的检查机制,判断容器是不是正常 StartupProbe 启动探针 有时候,会有一些现有的应用在启动时需要较长的初始化时间。 要这种情况下,若要不影响对死锁作出快速响应的探测,设置存活探测参数是要技巧的。 技巧就是使用相同的命令来设置启动探测,针对 HTTP 或 TCP 检测,可以通过将 failureThreshold * periodSeconds 参数设置为足够长的时间来应对糟糕情况下的启动时间。 1ports: 2 - name: liveness-port 3 containerPort: 8080 4 hostPort: 8080 5 6livenessProbe: 7 httpGet: 8 path: /healthz 9 port: liveness-port 10 failureThreshold: 1 11 periodSeconds: 10 12 13startupProbe: 14 httpGet: 15 path: /healthz 16 port: liveness-port 17 failureThreshold: 30 18 periodSeconds: 10 幸亏有启动探测,应用程序将会有最多 5 分钟(30 * 10 = 300s)的时间来完成其启动过程。 一旦启动探测成功一次,存活探测任务就会接管对容器的探测,对容器死锁作出快速响应。 如果启动探测一直没有成功,容器会在 300 秒后被杀死,并且根据restartPolicy来执行进一步处置。