Полгода назад поднимал машину и кластер в облаке, на новый ноут перенес доступы к кластеру, а 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 открыт!