如何通过SSH连接到Kubernetes节点或服务器

v09wglhw  于 2023-01-16  发布在  Kubernetes
关注(0)|答案(5)|浏览(368)

如何通过SSH连接到AWS上托管的Kubernetes节点或服务器?我在AWS上托管了Kubernetes服务器和节点。我可以在本地笔记本电脑上使用kubectl get node命令查看节点和服务器。
我需要为我的节点创建一个持久卷,但我无法ssh到它。
是否有任何特定的方法可以将ssh导入节点或服务器?

qjp7pelc

qjp7pelc1#

使用kubectl ssh node NODE_NAME
这个kubectl插件来自这里。https://github.com/luksa/kubectl-plugins。我已经验证过了。它的工作原理类似于openshift中的oc命令。

swvgeqrz

swvgeqrz2#

试试这个:ssh -i <path of the private key file> admin@<ip of the aws kube instances>
perm文件应位于$HOME/.ssh/kube_rsa中

ggazkfy8

ggazkfy83#

访问Kubernetes节点的方法和使用ssh访问其他linux机器的方法类似,只需使用该节点的外部ip尝试ssh,就可以用这种方法登录。

uubf1zoe

uubf1zoe4#

如果工作节点位于私有子网中,则可以使用bastion host和ssh代理转发,如https://aws.amazon.com/blogs/security/securely-connect-to-linux-instances-running-in-a-private-amazon-vpc/中所定义

7cwmlq89

7cwmlq895#

我还没有在AWS上具体尝试过,但是您可以使用以下技巧将shell安装到Node上。
如果您需要访问Kubernetes群集的底层节点(并且您没有直接访问权限-通常如果您在其他地方托管Kubernetes),您可以使用以下部署来创建Pod,您可以在其中使用kubectl exec登录,并且可以访问节点的IPC和/node-fs下的完整文件系统。执行chroot /node-fs。不建议继续运行此命令,但如果您需要访问节点,此命令将有所帮助。因为它是守护进程集,所以它会在每个节点上启动其中一个Pod。

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: privpod
spec:
  selector:
    matchLabels:
      mydaemon: privpod
  template:
    metadata:
      labels:
        mydaemon: privpod
    spec:
      hostNetwork: true
      hostPID: true
      hostIPC: true
      containers:
        - name: privcontainer
          image: johnnyb61820/network-toolkit
          securityContext:
            privileged: true
          command:
            - tail
            - "-f"
            - /dev/null
          volumeMounts:
            - name: nodefs
              mountPath: /node-fs
            - name: devfs
              mountPath: /dev
      volumes:
        - name: nodefs
          hostPath:
            path: / 
        - name: devfs
          hostPath:
            path: /dev

这是Cloud Native Applications with Docker and Kubernetes的附录C.13。我发现这很有用,尤其是当我需要处理物理驱动器或类似的东西时。这不是你应该保持运行的东西,但在紧要关头会有所帮助。

相关问题