add: minor.

This commit is contained in:
2025-03-25 16:04:39 +03:00
parent 0a90d4a444
commit c7a5241d33
5 changed files with 114 additions and 86 deletions

View File

@@ -0,0 +1,28 @@
# Установка 3X-UI как под в K3s (Kubernetes)
3X-UI — это симпатичный веб-интерфейс для управления VPN-серверами, такими как WireGuard, Shadowsocks, Xray, V2Ray
и тому подобное. Он позволяет настраивать и мониторить VPN-соединения и клиентов через браузер. Мы будем запускать
его как контейнер (под) внутри K3s кластера на Orange Pi 5.
### Создание namespace (не обязательно)
Для удобства организации рекомендую создать отдельное пространство имён (`namespace`) для 3X-UI. Это как папка для
ресурсов, чтобы они не смешивались с другими приложениями.
Выполним в терминале:
```bash
sudo kubectl create namespace x-ui
```
Проверим, что пространство имён создано:
```bash
kubectl get namespaces
```
Увидим x-ui в списке:
```text
NAME STATUS AGE
... ... ...
... ... ...
x-ui Active 6s
```

View File

@@ -23,8 +23,8 @@
│ └── cclient-shadowsocks--izmir/ # Локация Измир
│ ├── config.yaml
│ └── deployment.yaml
├── ...
└── ...
├──
└──
```
Создаем файл `config.yaml` для первого Shadowsocks-клиента (Москва):
@@ -61,7 +61,7 @@ data:
- `data:` — данные конфигурации.
- `config.json:` — имя файла, в который будет записан конфиг.
- `|` — говорит, что дальше будет многострочный текст.
- `{...}` — Собственно JSON-конфигурация нашего Shadowsocks-клиента.
- `{}` — Собственно JSON-конфигурация нашего Shadowsocks-клиента.
- `server` и `server_port` — адрес и порт нашего VPS.
- `local_address` и `local_port` — где будет SOCKS5 внутри кластера.
- `password` и `method` — пароль и метод шифрования. Метод шифрования `chacha20-ietf-poly1305` -- используется,
@@ -150,10 +150,10 @@ sudo k3s kubectl get pods -n kube-system
Увидим что-то типа:
```text
NAME READY STATUS RESTARTS AGE
...
...
shadowsocks-client-moscow-54d64bf5f4-trb6p 1/1 Running 0 24m
...
```
Можно проверь логи:
@@ -232,10 +232,10 @@ sudo k3s ctr images ls | grep shadowsocks
Увидим что-то типа:
```text
...
docker.io/library/shadowsocks-with-tools:latest application/vnd.oci.image.manifest.v1+json sha256:... 22.5 MiB linux/arm64 io.cri-containerd.image=managed
...
...
docker.io/library/shadowsocks-with-tools:latest application/vnd.oci.image.manifest.v1+json sha256: 22.5 MiB linux/arm64 io.cri-containerd.image=managed
```
Теперь нам нужно передать образ контейнера на другие ноды кластера. Как это сделать есть заметка "[Развертывание
@@ -246,15 +246,15 @@ docker.io/library/shadowsocks-with-tools:latest application/vnd.oci.image.ma
новый образ. Закомментируем строку `image: shadowsocks/shadowsocks-libev:latest` и вставим две строки после неё
(обратите внимание на заметки):
```yaml
...
spec:
containers:
- name: shadowsocks-client
# image: shadowsocks/shadowsocks-libev:latest
image: shadowsocks-with-tools # Без :latest, чтобы k3s не "ходил" за контейнером в реестр (например, DockerHub)
imagePullPolicy: Never # Только локальный образ, не тянуть из реестра
...
...
```
Уберём старый под из deployment и удалим сам под из k3s:
@@ -276,9 +276,9 @@ sudo k3s kubectl get pods -n kube-system
Увидим что-то типа:
```text
NAME READY STATUS RESTARTS AGE
...
shadowsocks-client-moscow-6cf7b956b8-mtsg4 1/1 Running 0 9s
...
```
#### Проверка работы Shadowsocks
@@ -344,12 +344,12 @@ sudo k3s kubectl logs -n kube-system shadowsocks-client-moscow-<hash>
Для этого нужно изменить _local_address_ в конфиге shadowsocks-клиента `config.yaml`:
```yaml
...
"server_port": <ПОРТ>,
# "local_address": "127.0.0.1",
"local_address": "0.0.0.0",
"local_port": 1081,
...
```
Применим конфиг:
@@ -437,9 +437,9 @@ sudo k3s kubectl get service -n kube-system
Увидим что-то типа:
```text
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
...
ss-moscow-service ClusterIP 10.43.236.81 <none> 1081/TCP,1081/UDP 5m5s
...
```
Теперь другие поды могут обращаться к `ss-moscow-service.kube-system.svc.cluster.local:1081` как к SOCKS5-прокси.