Полгода назад поднимал машину и кластер в облаке, на новый ноут перенес доступы к кластеру, а ssh ключ остался там и успешно утерян.
В итоге на рабочем кластере есть доступ до kubernetes, а вот самого ssh доступа нету.
Случай необычный и быстрого способа в интернете не нашлось.
Путем недолгих размышлений пришел к мысли, у нас же есть volumes, и мы как в докере может туда пути пробросить.
Почитав доку кубера по Volumes нашел интересный параметр hostPath, который как раз и монтирует файловую систему в Pod, выполнив этот файлик (заменив USER на имя пользователя) мы получим под со смонтированной файловой системой нашего юзера.
apiVersion: apps/v1
kind: Deployment
metadata:
name: sleep
spec:
replicas: 1
selector:
matchLabels:
app: sleep
template:
metadata:
labels:
app: sleep
spec:
containers:
- image: busybox
name: sleep
args:
- sleep
- inf
volumeMounts:
- name: myvol
mountPath: /home/USER
volumes:
- name: myvol
hostPath:
path: /home/USER
Затем смотрим наш под
kubectl exec -ti sleep-EXAMPLE-EXAMP -- cat /home/bazumax/.ssh/authorized_keys И вуаля мы можем посмотреть какие ключики у нас там лежат.
И чтобы добавить новый ключик, пишем его в файлик, например publickey.txt и копируем в машину через kubectl , команда подобна scp, указываем под куда копирнуть, а сам файлик у нас рядом с терминальчиком.
k cp mypublic.txt sleep-EXAMPLE-EXAMP:/tmp/key.txt Далее ддшечкой записываем файлик (заменив USER на имя пользователя)
k exec -ti sleep-855fb86b8f-m8x2b -- dd if=/tmp/key.txt of=/home/USER/.ssh/authorized_keysИ вуаля, доступ к машине через ssh открыт!