add: k3s (реплика coredn 2)
This commit is contained in:
parent
5d2e53d313
commit
ea88f3065a
@ -375,6 +375,8 @@ sudo k3s kubectl delete pod svclb-traefik-xxxxxxxxx-xxxxx -n kube-system --force
|
||||
при добавлении можно в флаге `--server` указать IP как первого, так и второго мастера. И не забудьте в `--tls-san`
|
||||
указать IP хоста нового (третьего) мастера.
|
||||
|
||||
### Тюнинг kube-dns
|
||||
|
||||
После установки можно попробовать отключить один из мастеров и убедиться, что кластер остаётся работоспособным,
|
||||
а спустя некоторое время (иногда 10-15 минут) поды с погашенного мастера перезапустятся на других нодах. Например:
|
||||
```text
|
||||
@ -396,7 +398,7 @@ traefik-6c979cd89d-z6wwm 1/1 Running 0 2
|
||||
приложения(ий) развернутых внутри k3s предполагает переподключение с использованием имен подов или обнаружение подов,
|
||||
то это тоже перестанет работать.
|
||||
|
||||
Решением может быть использование двух реплик `coredns` (вместо одной). Откроем файл конфигурации k3s:
|
||||
Решением может быть использование двух реплик `coredns` (вместо одной). Откроем файл конфигурации k3s на редактирование:
|
||||
```bash
|
||||
sudo k3s kubectl edit deployment coredns -n kube-system
|
||||
```
|
||||
@ -417,6 +419,7 @@ spec:
|
||||
replicas: 2
|
||||
revisionHistoryLimit: 0
|
||||
```
|
||||
|
||||
Сохраним изменения и выйдем из редактора. Изменения сразу применятся, и k3s создаст вторую реплику `coredns`:
|
||||
```text
|
||||
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
|
||||
@ -433,3 +436,28 @@ coredns-ccb96694c-wzh96 1/1 Running 0 3h10
|
||||
...
|
||||
```
|
||||
|
||||
**Как это будет работать?** Обе реплики `coredns` привязаны к сервису `kube-dns` в пространстве имён `kube-system`.
|
||||
Он имеет фиксированный *Cluster IP* (внутренний IP-адрес кластера) и балансирует запросы между всеми зарегистрированными
|
||||
подами `coredns` (у нас теперь две реплики). Каждый под `coredns` регистрируется как endpoint в `kube-dns` при старте.
|
||||
|
||||
Посмотеть endpoint'ы сервиса `kube-dns` можно командой:
|
||||
```bash
|
||||
sudo k3s kubectl get endpoints kube-dns -n kube-system
|
||||
```
|
||||
|
||||
И увидим, что у `kube-dns` несколько endpoint'ов (IP-адресов подов `coredns`) включая оба новых и старые, которые
|
||||
гасили при экспериментах с устойчивостью кластера:
|
||||
```text
|
||||
NAME ENDPOINTS AGE
|
||||
kube-dns 10.42.1.8:53,10.42.2.6:53,10.42.1.8:53 + 3 more... 5d23h
|
||||
```
|
||||
|
||||
Каждый под `coredns` -- самостоятельный DNS-сервер. Они не взаимодействуют друг с другом и не обмениваются данными. Это
|
||||
просто экземпляры одного и того же сервиса, работающие параллельно. Они независимы, получают данные из API Kubernetes
|
||||
и отвечают на запросы параллельно. В каждом поде кластера в качестве DNS настроен `kube-dns` (задаётся в файле
|
||||
`/etc/resolv.conf` внутри пода). Когда под отправляет DNS-запрос, его получит `kube-dns` и перенаправит запрос
|
||||
к одному из доступных `coredns`. Балансировка происходит по случайного выбора (Round-Robin). Если один из `coredns`
|
||||
недоступен (например, узел выключен), `kube-dns` не получит ответа, и направит запросы к живому `coredns`.
|
||||
|
||||
### Разные архитектуры на узлах кластера (гетерогенность)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user