Kubernetes配置镜像仓库认证imagePullSecrets
创建 secret可以在 namespace 里用一个全局的 image pull secret,创建个 secret,如果有特殊字符的,可以用单引号 ‘ ‘ 引起来。
12# docker-secret 是 secret 的名字kubectl create secret docker-registry docker-secret --docker-server=harbor.i.com --docker-username='robot$ali' --docker-password=123456 -n default
全局配置给默认的 serviceaccount 配置 imagePullSecrets , 这样配置好了之后,就无须在每个 deployment 上配置了。
1kubectl patch serviceaccount default -n default -p '{"imagePullSecrets": [{"name": "docker-secret" ...
fail2ban失效排查
selinux容易忽略的一点,selinux 会限制 fail2ban 的执行, 手动运行 /usr/bin/fail2ban-server -xf start 可以正常运行,但是 systemd 就是无法启动,会报错找不到日志文件,这种情况可以将 selinux 禁用再测试。
12Sep 09 10:44:01 zhangfei fail2ban-server[1795]: 2024-09-09 10:44:01,134 fail2ban [1795]: ERROR Failed during configuration: Have not found any log file for nginx-http-cc jailSep 09 10:44:01 zhangfei fail2ban-server[1795]: 2024-09-09 10:44:01,134 fail2ban [1795]: ERROR Async configuration of server failed
使用 fail2ban-regex ...
Prometheus中查询无数据提供默认值
单一时间序列(时间戳)的样本。具体来说,vector(0) 将创建一个包含值 0 的瞬时向量(即在某个时间点的时间序列)。
1sum(increase(nginx_ingress_controller_requests{status=~"4.*"}[3m])) or vector(0)
这里的 vector(0) 的作用是为查询结果提供一个默认值或回退值。当前面的 sum(increase(...)) 查询没有返回任何结果时,整个查询将返回 vector(0) 生成的值,即 0。
kubectl导出的yaml忽略指定字段
kubectl 指定 -o yaml 输出的 yaml 文件包含一些默认字段,这些字段我们是不需要的,可以使用 yq 来进行去除这些字段,生成的 yaml 文件可以用于迁移/部署服务等。
安装 yq12curl -L https://file.babudiu.com/f/gRIG/yq_linux_amd64 -o /bin/yqchmod +x /bin/yq
导出 deployment1234567891011121314kubectl get deployment nginx -o yaml | yq eval ' del( .metadata.annotations, .metadata.creationTimestamp, .metadata.generation, .metadata.resourceVersion, .metadata.selfLink, .metadata.uid, .spec.progressDeadlineSeconds, .spec.revisionHistoryLimit, ...
MySQL进行文件操作
我执行了这条命令:
1select concat('KILL ',id,';') from information_schema.processlist where COMMAND='Query' AND time > 10 into outfile '/tmp/a.txt';
报错: The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
查询 MySQL 的安全文件目录
12345678mysql> show variables like '%secure%';+--------------------------+-----------------------+| Variable_name | Value |+--------------------------+---- ...
PyCharm配合WSL进行开发
本文使用 WSL2,WSL2 里面安装了 Docker, PyCharm 支持的配合 wsl 进行使用的方法有很多种,这里提供几个思路
方法 1: WSL 远程开发(目前 BETA 版)方法 2: 代码放在 Windows 上,Python 解释器在 WSL 里方法 3: 代码放在 WSL 里,Python 解释器在 WSL 里方法 4: 代码放在 WSL 里,Python 解释器在 WSL 里的 Docker 里方法 5: 代码放在 Windows 上,Python 解释器放在 WSL 里的 Docker 里方法 6: 直接在 WSL 里安装 Linux 版的 PyCharm(WSL 支持 GUI 程序运行)方法 7: 使用 devcontainer(不好用)
我最推荐的: 将代码放在 WSL 中,将 Python 解释器放在 WSL 中。
代码放在 WSL 里,Python 解释器在 WSL 里首选,这个时候执行的就是 wsl 里的程序,比如 git 调用的就是 wsl 里的 git 程序。
使用方法:
进入 WSL 终端拉取代码(PyCharm 目前不支持拉代码到 WSL 里) ...
使用Python开发一个Prometheus exporter
需求:需要监控指定的邮箱发送邮件是否正常,使用 Prometheus 官方的 Python sdk,代码如下:
代码12345678910111213141516171819202122232425262728293031323334353637383940from prometheus_client import start_http_server, Gaugeimport smtplibimport argparseimport time# 创建一个 Gauge 类型的指标EMAIL_AUTHENTICATION_SUCCESS = Gauge('email_authentication_success', 'Indicates if the email authentication was successful', ['email'])def check_email_authentication(email, password, smtp_server, smtp_port): try: server ...
Alpine容器文件后缀浏览器下载变成zip
比如一个网盘程序,上传了一个 excel 文件,点击获取直链,然后将获取到的直链放到浏览器地址栏访问触发下载,下载下来的文件后缀自动变成了.zip
这是因为 Alpine 镜像比较精简,缺少了很多 MIME 类型数据,可以通过安装 mailcap 包来解决。
12FROM Alpine:latestRUN apk add --no-cache mailcap
再次测试,已经正常
nginx Ingress 对指定路径去除 contextpath
要在 Kubernetes 中配置 Nginx Ingress 以便转发到后端时去掉 contextPath,你可以通过以下步骤来实现:
单个 path 去掉 contextpath假设你有一个服务在 /app 路径下运行,并希望通过 Ingress 直接访问后端服务的根路径 /,可以如下配置:
12345678910111213141516171819apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: example-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2spec: rules: - host: example.com http: paths: - path: /app(/|$)(.*) pathType: ImplementationSpecific backend: service: name: exampl ...
CentOS 7 停止维护后如何使用
CentOS 7 停止维护后,很多源都失效了,使用 yum 的时候报错 404,需要修改源才能继续使用。
老版本 CentOS 源被更改成 vault 源,需要更换成 vault 源才能继续使用 yum。
修改成官方源
1234sudo sed -i.bak \ -e 's|^mirrorlist=|#mirrorlist=|g' \ -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://https://vault.centos.org/centos|g' \ /etc/yum.repos.d/CentOS-Base.repo
或者更换成中科大的源
12345678910111213141516171819202122232425262728293031323334353637383940414243444546cat > /etc/yum.repos.d/CentOS-Base.repo <<-'EOF'# CentOS-Ba ...