K8S外网:SSH 登录 Node(pod)
在排查 Kubernetes 问题时,通常需要 SSH 登录到具体的 Node 上面查看 kubelet、docker、iptables 等的状态和日志。在使用云平台时,可以给相应的 VM 绑定一个公网 IP;而在物理机部署时,可以通过路由器上的端口映射来访问。但更简单的方法是使用 SSH Pod (不要忘记替换成你自己的 nodeName):
# cat ssh.yaml
apiVersion: v1
kind: Service
metadata:
name: ssh
spec:
selector:
app: ssh
type: LoadBalancer
ports:
- protocol: TCP
port: 22
targetPort: 22
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: ssh
labels:
app: ssh
spec:
replicas: 1
selector:
matchLabels:
app: ssh
template:
metadata:
labels:
app: ssh
spec:
containers:
- name: alpine
image: alpine
ports:
- containerPort: 22
stdin: true
tty: true
hostNetwork: true
nodeName: <node-name>
$ kubectl create -f ssh.yaml
$ kubectl get svc ssh
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ssh LoadBalancer 10.0.99.149 52.52.52.52 22:32008/TCP 5m
接着,就可以通过 ssh 服务的外网 IP 来登录 Node,如 ssh user@52.52.52.52。
在使用完后, 不要忘记删除 SSH 服务 kubectl delete -f ssh.yaml。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!