This commit is contained in:
24
File/Shell/inotify-check.sh
Normal file
24
File/Shell/inotify-check.sh
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#############################################################################################
|
||||||
|
# 用途: 查看当前inotify实例使用情况
|
||||||
|
# 作者: 丁辉
|
||||||
|
# 编写事件: 2025-12-25
|
||||||
|
#############################################################################################
|
||||||
|
|
||||||
|
echo "=== Inotify 实例使用统计 ==="
|
||||||
|
echo "当前配置限制: $(cat /proc/sys/fs/inotify/max_user_instances)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 按用户统计
|
||||||
|
sudo find /proc/*/fd -lname anon_inode:inotify 2>/dev/null | \
|
||||||
|
cut -d/ -f3 | xargs -I '{}' ps --no-headers -o '%U' -p '{}' | \
|
||||||
|
sort | uniq -c | sort -nr | head -20
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=== 推荐值计算 ==="
|
||||||
|
current_used=$(sudo find /proc/*/fd -lname anon_inode:inotify 2>/dev/null | wc -l)
|
||||||
|
echo "当前使用: $current_used 个实例"
|
||||||
|
recommended=$((current_used * 3))
|
||||||
|
echo "推荐配置: $recommended (当前使用量的3倍)"
|
||||||
|
echo "最小安全值: $((current_used * 2))"
|
||||||
59
File/Yaml/rustfs-values-distributed.yaml
Normal file
59
File/Yaml/rustfs-values-distributed.yaml
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
image:
|
||||||
|
repository: rustfs/rustfs
|
||||||
|
tag: latest # 部署时使用镜像的版本
|
||||||
|
|
||||||
|
storageclass:
|
||||||
|
name: local-path # 更换为自己的 storageClass 存储
|
||||||
|
dataStorageSize: 10Gi
|
||||||
|
logStorageSize: 5Gi
|
||||||
|
|
||||||
|
replicaCount: 4 # 副本数控制(默认为4, 建议至少4个副本以保证分布式存储的可靠性)
|
||||||
|
mode:
|
||||||
|
standalone:
|
||||||
|
enabled: false # 单节点模式(根据自己需求切换)
|
||||||
|
distributed:
|
||||||
|
enabled: true # 多节点模式(根据自己需求切换)
|
||||||
|
|
||||||
|
resources: # Pod 资源限制
|
||||||
|
requests:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 1Gi
|
||||||
|
limits:
|
||||||
|
cpu: 1000m
|
||||||
|
memory: 2Gi
|
||||||
|
|
||||||
|
secret:
|
||||||
|
rustfs:
|
||||||
|
access_key: rustfsadmin
|
||||||
|
secret_key: rustfsadmin
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
endpoint:
|
||||||
|
port: 9000
|
||||||
|
console:
|
||||||
|
port: 9001
|
||||||
|
|
||||||
|
nodeSelector:
|
||||||
|
kubernetes.io/os: linux
|
||||||
|
rustfs: "true"
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
className: "nginx" # 指定 ingress 控制器, 不指定则需要集群内存在默认的 ingress 控制器
|
||||||
|
nginxAnnotations:
|
||||||
|
nginx.ingress.kubernetes.io/proxy-body-size: "1024m" # 调整文件上传允许传输大小
|
||||||
|
nginx.ingress.kubernetes.io/affinity: cookie
|
||||||
|
nginx.ingress.kubernetes.io/session-cookie-expires: "3600"
|
||||||
|
nginx.ingress.kubernetes.io/session-cookie-hash: sha1
|
||||||
|
nginx.ingress.kubernetes.io/session-cookie-max-age: "3600"
|
||||||
|
nginx.ingress.kubernetes.io/session-cookie-name: rustfs
|
||||||
|
hosts:
|
||||||
|
- host: rustfs.example.com # 更换为自己的域名
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- rustfs.example.com # 更换为自己的域名
|
||||||
|
secretName: rustfs-tls
|
||||||
55
File/Yaml/rustfs-values-standalone.yaml
Normal file
55
File/Yaml/rustfs-values-standalone.yaml
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
image:
|
||||||
|
repository: rustfs/rustfs
|
||||||
|
tag: latest # 部署时使用镜像的版本
|
||||||
|
|
||||||
|
storageclass:
|
||||||
|
name: local-path # 更换为自己的 storageClass 存储
|
||||||
|
dataStorageSize: 10Gi
|
||||||
|
logStorageSize: 5Gi
|
||||||
|
|
||||||
|
replicaCount: 1 # 副本数控制
|
||||||
|
mode:
|
||||||
|
standalone:
|
||||||
|
enabled: true # 单节点模式(根据自己需求切换)
|
||||||
|
distributed:
|
||||||
|
enabled: false # 多节点模式(根据自己需求切换)
|
||||||
|
|
||||||
|
resources: # Pod 资源限制
|
||||||
|
requests:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 1Gi
|
||||||
|
limits:
|
||||||
|
cpu: 1000m
|
||||||
|
memory: 2Gi
|
||||||
|
|
||||||
|
secret:
|
||||||
|
rustfs:
|
||||||
|
access_key: rustfsadmin
|
||||||
|
secret_key: rustfsadmin
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
endpoint:
|
||||||
|
port: 9000
|
||||||
|
console:
|
||||||
|
port: 9001
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
className: "nginx" # 指定 ingress 控制器, 不指定则需要集群内存在默认的 ingress 控制器
|
||||||
|
nginxAnnotations:
|
||||||
|
nginx.ingress.kubernetes.io/proxy-body-size: "1024m" # 调整文件上传允许传输大小
|
||||||
|
nginx.ingress.kubernetes.io/affinity: cookie
|
||||||
|
nginx.ingress.kubernetes.io/session-cookie-expires: "3600"
|
||||||
|
nginx.ingress.kubernetes.io/session-cookie-hash: sha1
|
||||||
|
nginx.ingress.kubernetes.io/session-cookie-max-age: "3600"
|
||||||
|
nginx.ingress.kubernetes.io/session-cookie-name: rustfs
|
||||||
|
hosts:
|
||||||
|
- host: rustfs.example.com # 更换为自己的域名
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- rustfs.example.com # 更换为自己的域名
|
||||||
|
secretName: rustfs-tls
|
||||||
94
Helm/Helm部署Minio替代品RustFS.md
Normal file
94
Helm/Helm部署Minio替代品RustFS.md
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
> 本文作者:丁辉
|
||||||
|
|
||||||
|
# Helm部署Minio替代品RustFS
|
||||||
|
|
||||||
|
[官方仓库](https://github.com/rustfs/rustfs/tree/main/helm)
|
||||||
|
|
||||||
|
## 安装 RustFS 集群
|
||||||
|
|
||||||
|
1. 添加 Helm 仓库
|
||||||
|
|
||||||
|
```bash
|
||||||
|
helm repo add rustfs https://charts.rustfs.com
|
||||||
|
helm repo update
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 下载 rustfs-values.yaml 文件
|
||||||
|
|
||||||
|
- 单节点部署
|
||||||
|
|
||||||
|
[查看文件内容](https://gitee.com/offends/Kubernetes/blob/main/File/Yaml/rustfs-values-standalone.yaml) (根据自己情况修改)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/rustfs-values-standalone.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
- 集群部署
|
||||||
|
|
||||||
|
[查看文件内容](https://gitee.com/offends/Kubernetes/blob/main/File/Yaml/rustfs-values-distributed.yaml) (根据自己情况修改)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/rustfs-values-distributed.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
配置节点标签
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl label node ${node} rustfs="true"
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 安装 RustFS 集群
|
||||||
|
|
||||||
|
- 单节点部署
|
||||||
|
|
||||||
|
```bash
|
||||||
|
helm install \
|
||||||
|
rustfs-cluster rustfs/rustfs \
|
||||||
|
--namespace rustfs \
|
||||||
|
--create-namespace \
|
||||||
|
-f rustfs-values-standalone.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
- 集群部署
|
||||||
|
|
||||||
|
```bash
|
||||||
|
helm install \
|
||||||
|
rustfs-cluster rustfs/rustfs \
|
||||||
|
--namespace rustfs \
|
||||||
|
--create-namespace \
|
||||||
|
-f rustfs-values-distributed.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
4. 配置 Ingress 证书
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl create secret tls rustfs-tls --key nginx.key --cert nginx.pem -n rustfs
|
||||||
|
```
|
||||||
|
|
||||||
|
5. 访问页面
|
||||||
|
|
||||||
|
访问地址:rustfs.example.com
|
||||||
|
|
||||||
|
账号密码:rustfsadmin/rustfsadmin
|
||||||
|
|
||||||
|
## 卸载
|
||||||
|
|
||||||
|
1. 卸载 RustFS 集群
|
||||||
|
|
||||||
|
```bash
|
||||||
|
helm uninstall rustfs-cluster -n rustfs
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 删除命名空间
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl delete ns rustfs
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 清理 Pvc 资源(生产环境慎重考虑)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl delete pvc -n rustfs --all
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
2. 下载模版文件
|
2. 下载模版文件
|
||||||
|
|
||||||
|
[查看文件内容](https://gitee.com/offends/Kubernetes/blob/main/File/Yaml/ingress-values-hostnetwork.yaml) (根据自己情况修改)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
wget https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/ingress-values-hostnetwork.yaml
|
wget https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/ingress-values-hostnetwork.yaml
|
||||||
```
|
```
|
||||||
|
|||||||
51
使用文档/其他/Service实现代理外部服务.md
Normal file
51
使用文档/其他/Service实现代理外部服务.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
> 本文作者:丁辉
|
||||||
|
>
|
||||||
|
|
||||||
|
# Service实现代理外部服务
|
||||||
|
|
||||||
|
## 基础环境准备
|
||||||
|
|
||||||
|
部署一个 Docker Nginx 服务暴露本地 10000 端口
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -it --rm --name nginx-demo -p 10000:80 nginx:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
## 基于 Endpoints 实现
|
||||||
|
|
||||||
|
1. 创建 Endpoints,Service
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
cat <<EOF | kubectl apply -f -
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: nginx-proxy # 必须与 Service 同名
|
||||||
|
namespace: default
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 127.0.0.1 # 替换为 Nginx 服务器访问地址
|
||||||
|
ports:
|
||||||
|
- port: 10000
|
||||||
|
protocol: TCP
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: nginx-proxy
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 80
|
||||||
|
targetPort: 80
|
||||||
|
type: ClusterIP
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 查看
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl get ep,svc
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 访问测试
|
||||||
23
网关/Ingress/Ingress-Annotations参数记录.md
Normal file
23
网关/Ingress/Ingress-Annotations参数记录.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
> 本文作者:丁辉
|
||||||
|
|
||||||
|
# Ingress-Annotations参数记录
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
...
|
||||||
|
annotations:
|
||||||
|
# 不限制文件上传大小
|
||||||
|
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
||||||
|
# 告诉Ingress后端是HTTPS
|
||||||
|
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
|
||||||
|
# 跳过证书验证(自签名时)
|
||||||
|
nginx.ingress.kubernetes.io/proxy-ssl-verify: "off"
|
||||||
|
# cert-manager 自动生成证书参数
|
||||||
|
cert-manager.io/cluster-issuer: "letsencrypt-prod"
|
||||||
|
# 开启金丝雀
|
||||||
|
nginx.ingress.kubernetes.io/canary: "true"
|
||||||
|
# 10%流量到金丝雀
|
||||||
|
nginx.ingress.kubernetes.io/canary-weight: "10"
|
||||||
|
```
|
||||||
90
网关/Ingress/其他/Ingress代理外部服务Teleport.md
Normal file
90
网关/Ingress/其他/Ingress代理外部服务Teleport.md
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
> 本文作者:丁辉
|
||||||
|
>
|
||||||
|
|
||||||
|
# Ingress代理外部服务Teleport
|
||||||
|
|
||||||
|
## 准备
|
||||||
|
|
||||||
|
修改 Teleport 服务为 HTTP 协议
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
proxy_service:
|
||||||
|
enabled: "yes"
|
||||||
|
web_listen_addr: 0.0.0.0:9443
|
||||||
|
public_addr: teleport.example.com:443 # 对外访问地址
|
||||||
|
# 删除如下内容
|
||||||
|
# https_keypairs:
|
||||||
|
# - key_file:
|
||||||
|
# cert_file:
|
||||||
|
# https_keypairs_reload_interval: 0s
|
||||||
|
# acme: {}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 开启对外访问
|
||||||
|
|
||||||
|
1. Endpoints 对接外部 Teleport
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
cat <<EOF | kubectl apply -f -
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Endpoints
|
||||||
|
metadata:
|
||||||
|
name: teleport-proxy
|
||||||
|
namespace: teleport
|
||||||
|
subsets:
|
||||||
|
- addresses:
|
||||||
|
- ip: 127.0.0.1 # 修改为 Teleport 服务器访问地址
|
||||||
|
ports:
|
||||||
|
- port: 9443
|
||||||
|
protocol: TCP
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: teleport-proxy
|
||||||
|
namespace: teleport
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 9443
|
||||||
|
targetPort: 9443
|
||||||
|
type: ClusterIP
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 配置对外 Ingress
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
cat <<EOF | kubectl apply -f -
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: teleport
|
||||||
|
namespace: teleport
|
||||||
|
annotations:
|
||||||
|
# 不限制文件上传大小
|
||||||
|
nginx.ingress.kubernetes.io/proxy-body-size: "0"
|
||||||
|
# 告诉Ingress后端是HTTP
|
||||||
|
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
|
||||||
|
labels:
|
||||||
|
app: teleport
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: teleport.example.com
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: teleport-proxy
|
||||||
|
port:
|
||||||
|
number: 9443
|
||||||
|
path: /
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- teleport.example.com
|
||||||
|
secretName: teleport-tls
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 访问即可
|
||||||
|
|
||||||
@@ -112,11 +112,17 @@ install -o root -g root -m 0755 kind-linux-amd64 /usr/local/bin/kind
|
|||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
> 嫌端口太少?来吧循环起来,截止2025年12月2日官方并没有给出特别好的解决办法,只能一个一个写。循环示例如下
|
> - 嫌端口太少?来吧循环起来,截止2025年12月2日官方并没有给出特别好的解决办法,只能一个一个写。循环示例如下
|
||||||
>
|
>
|
||||||
> ```bash
|
> ```bash
|
||||||
> $(for p in $(seq 30000 31000); do echo " - containerPort: $p"; echo " hostPort: $p"; echo " protocol: TCP"; echo " listenAddress: 0.0.0.0"; done)
|
> $(for p in $(seq 30000 31000); do echo " - containerPort: $p"; echo " hostPort: $p"; echo " protocol: TCP"; echo " listenAddress: 0.0.0.0"; done)
|
||||||
> ```
|
> ```
|
||||||
|
>
|
||||||
|
> - 去除控制节点污点允许调度
|
||||||
|
>
|
||||||
|
> ```bash
|
||||||
|
> kubectl taint nodes cluster1-control-plane node-role.kubernetes.io/control-plane:NoSchedule-
|
||||||
|
> ```
|
||||||
|
|
||||||
3. 创建集群
|
3. 创建集群
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,12 @@
|
|||||||
|
|
||||||
## 解决方法
|
## 解决方法
|
||||||
|
|
||||||
|
**查看当前值**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat /proc/sys/fs/inotify/max_user_instances
|
||||||
|
```
|
||||||
|
|
||||||
- 临时设置
|
- 临时设置
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -21,6 +27,20 @@
|
|||||||
sudo sysctl -p
|
sudo sysctl -p
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 脚本计算推荐值
|
||||||
|
|
||||||
|
1. 下载脚本
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wget https://gitee.com/offends/Kubernetes/raw/main/File/Shell/inotify-check.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 执行脚本
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bash inotify-check.sh
|
||||||
|
```
|
||||||
|
|
||||||
### 参数含义
|
### 参数含义
|
||||||
|
|
||||||
| 参数 | 说明 |
|
| 参数 | 说明 |
|
||||||
@@ -40,3 +60,10 @@
|
|||||||
- 如果你的机器上有大量容器或日志文件:
|
- 如果你的机器上有大量容器或日志文件:
|
||||||
- 默认 `max_user_instances` 太小 → Promtail 会报错 `failed to create fsnotify watcher: too many open files`
|
- 默认 `max_user_instances` 太小 → Promtail 会报错 `failed to create fsnotify watcher: too many open files`
|
||||||
- 提升到 8192 或更高,可以允许单个用户(比如运行 Promtail 的 `root` 或容器内用户)创建更多 inotify watcher。
|
- 提升到 8192 或更高,可以允许单个用户(比如运行 Promtail 的 `root` 或容器内用户)创建更多 inotify watcher。
|
||||||
|
|
||||||
|
### 推荐值
|
||||||
|
|
||||||
|
- **一般桌面用户**:512-1024
|
||||||
|
- **开发环境**:1024-2048
|
||||||
|
- **运行多容器/监控服务**:2048-8192
|
||||||
|
- **服务器/特殊情况**:16384 或更高
|
||||||
|
|||||||
Reference in New Issue
Block a user