FAQ

 

faq

Kubernetes

Kubernetes: найти Pod, на котором выполнялась Job

 

По умолчанию, у всех подов, которые запускались из job есть тег job-name, который можно использовать в --selector:

[simterm]

$ kubectl get pods --selector=job-name=your-job-name-27751740
NAME                                              READY   STATUS   RESTARTS   AGE
your-pod-27751740-5h44n   0/1     Error    0          4h20m
your-pod-27751740-bsk4n   0/1     Error    0          4h15m
...

[/simterm]

 


Kubernetes: запустить под с bash для тестов

 

Что бы запустить тестовый под для каких-либо проверок, например с Ubuntu – выполняем:

[simterm]

$ kubectl -n namespace-name run pod --rm -i --tty --image ubuntu -- bash

[/simterm]


Kubernetes: получить список всех подов на всех WorkerNodes

 
Вариант 1 – сортировка по имени рабочих нод

[simterm]

$ kubectl get pod -o=custom-columns=NODE:.spec.nodeName,NAME:.metadata.name --all-namespaces | sort
ip-10-3-42-245.us-east-2.compute.internal   aws-node-668rk
ip-10-3-42-245.us-east-2.compute.internal   coredns-5fb4bd6df8-znbzr
ip-10-3-42-245.us-east-2.compute.internal   gorush-5c6775748b-s6jkp
...

[/simterm]

Вариант 2 – сортировка по имени подов

[simterm]

$ kubectl get pod -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName --all-namespaces
prometheus-prometheus-node-exporter-99z6w                    Running     ip-10-3-43-168.us-east-2.compute.internal
prometheus-prometheus-node-exporter-b47k9                    Running     ip-10-3-49-200.us-east-2.compute.internal
prometheus-prometheus-node-exporter-brfvk                    Running     ip-10-3-58-193.us-east-2.compute.internal
...

[/simterm]

Вариант 3 – только IP подов

[simterm]

$ kubectl get pod --all-namespaces -o json | jq '.items[] | .spec.nodeName + " " + .status.podIP' | tail
"ip-10-3-43-168.us-east-2.compute.internal 10.3.43.168"
"ip-10-3-49-200.us-east-2.compute.internal 10.3.49.200"
"ip-10-3-58-193.us-east-2.compute.internal 10.3.58.193"

[/simterm]


Kubernetes: получить логи всех подов

 

Находим деплоймент:

[simterm]

$ kubectl -n eks-dev-1-eat-backend-ns get deploy
NAME                  READY   UP-TO-DATE   AVAILABLE   AGE
eat-backend   2/2     2            2           11d

[/simterm]

Читаем логи всех контейнеров в этом деплойменте:

[simterm]

$ kubectl -n eks-dev-1-eat-backend-ns logs -f deployment/eat-backend --all-containers=true --since=10m
Found 2 pods, using pod/eat-backend-d4f9fb9f8-vs8fr

[/simterm]


Linux

Linux: узнать публичный IP сервера из консоли

 
dig

[simterm]

$ dig +short myip.opendns.com @resolver1.opendns.com
194.***.***.26

[/simterm]

curl

[simterm]

$ curl ifconfig.co
$ curl ifconfig.me
$ curl icanhazip.com

[/simterm]


Linux: консоль – удалить историю

 

С помощью history:

[simterm]

$ history -cw

[/simterm]

См. --help:

[simterm]

$ history --help
history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
    Display or manipulate the history list.
    
    Display the history list with line numbers, prefixing each modified
    entry with a `*'.  An argument of N lists only the last N entries.
    
    Options:
      -c        clear the history list by deleting all of the entries
      -d offset delete the history entry at position OFFSET. Negative
                offsets count back from the end of the history list
...

[/simterm]


Linux: проверить подключение к порту

 
Telnet

Самый широкоизвестный и просто способ – с поомщью telnet:

[simterm]

$ telnet example.com 80
Trying 93.184.216.34…
Connected to example.com.
Escape character is ‘^]’.

[/simterm]

NetCat

Другой вариант – NetCat (nc), больше возможностей:

[simterm]

$ nc -zv example.com 80
Warning: Inverse name lookup failed for `93.184.216.34'
example.com [93.184.216.34] 80 (http) open

[/simterm]


Databases

MySQL: добавить пользователя и разрешить полный или read only доступ к базам

 

Добавить пользователя newuser, которому разрешён доступ только с localhost (самого сервера баз данных), и задать ему пароль password:

[simterm]

MySQL [(none)]> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

[/simterm]

Разрешить ему доступ ко всем базам данных:

[simterm]

MySQL [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';

[/simterm]

Или разрешить Read Only доступ ко всем базам:

[simterm]

MySQL [(none)]> GRANT SELECT on *.* to 'readonlyuser'@'%';

[/simterm]

Или без отдельной команды CREATE USER – всё одной строкой, и создание, и выдача разрешений, на базу dbname, с доступом с любого хоста:

[simterm]

MySQL [(none)]> GRANT SELECT ON dbname.* TO 'readonlyuser'@'%' IDENTIFIED BY 'password';

[/simterm]

При необходимости (на AWS RDS не требуется) обновляем списки доступов:

[simterm]

MySQL [(none)]> FLUSH PRIVILEGES;

[/simterm]


MySQL: список пользователей

 

Получить всех пользователей со всеми полями:

[simterm]

MySQL [(none)]> select * from mysql.user;

[/simterm]

Или определённые поля – получаем список полей:

[simterm]

MySQL [(none)]> desc mysql.user;
+--------------+----------------+------+-----+---------+-------+
| Field        | Type           | Null | Key | Default | Extra |
+--------------+----------------+------+-----+---------+-------+
| Host         | char(60)       | NO   | PRI |         |       |
| User         | char(32)       | NO   | PRI |         |       |
| Select_priv  | enum('N','Y')  | NO   |     | N       |       |
...

[/simterm]

И повторяем SELECT с указанием нужных полей:

[simterm]

MySQL [(none)]> select user, host from mysql.user;
+-----------------------------+-----------+
| user                        | host      |
+-----------------------------+-----------+
| dbadmin                     | %         |
| mysql.sys                   | localhost |
| rdsadmin                    | localhost |
+-----------------------------+-----------+

[/simterm]


MySQL: проверить права доступа

 

Используем SHOW GRANTS.

Проверить права текущего пользователя:

[simterm]

MariaDB [(none)]> SHOW GRANTS;
+-------------------------------------------------------------------------------+
| Grants for replicator@%                                                       |
+-------------------------------------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `replicator`@`%` IDENTIFIED BY PASSWORD '*' |
+-------------------------------------------------------------------------------+

[/simterm]

Другого юзера:

[simterm]

MariaDB [(none)]> SHOW GRANTS FOR 'username'@'%';

[/simterm]


Security

SSH: get public key from a private key

 

Что бы извлечь публичную часть ключа – выполняем:

[simterm]

$ ssh-keygen -y -f ~/.ssh/id_rsa.pem > ~/.ssh/id_rsa.pub

[/simterm]


SSH: get RSA key fingerprint

 

Что бы получить отпечаток публичной части ключа в SHA256 – выполняем:

[simterm]

$ ssh-keygen -lf ~/.ssh/id_rsa.pub
4096 SHA256:OYe3ZCb+qzY1hR6gLGE9/Lm28Qbp1lzfMp8bpy2g5J8 [email protected] (RSA)

[/simterm]


Windows

Windows: найти файл или папку из командной строки

 

Поиск можно выполнить с помощью dir и опции /s:

/S Отображение файлов из указанного каталога и всех его
подкаталогов.

Пример:

[simterm]

$ dir docker /S
Том в устройстве C не имеет метки.
Серийный номер тома: 1CA2-DA5A

Содержимое папки C:\Users\setevoy\Work\***\Projects\LON.***\***-server-api\authserver\src\main

29.09.2016 14:38 <DIR> docker
0 файлов 0 байт

[/simterm]