我有一个eks集群,那里有一个pod a,我想部署一个新的pod B,专门用于通过kubernetes api重新启动pod a的部署,这样我就可以从lambda调用pod B的LB服务,它将重新启动pod a的部署,只是期待着我们如何实现这一点,如果有人能在这方面提供帮助,那就太好了。
一种使用kubernetes API 从另一个吊舱重新启动吊舱的方法
您可以检查客户端库并使用它来重新启动POD。
K8s库列表:https://kubernetes.io/docs/reference/using-api/client-libraries/
如果您使用python:
from kubernetes import client, config, watch
import json
import requests
import time
logger = logging.getLogger('k8s_events')
logger.setLevel(logging.DEBUG)
# If running inside pod
#config.load_incluster_config()
# If running locally
config.load_kube_config()
v1 = client.CoreV1Api()
v1ext = client.ExtensionsV1beta1Api()
通过K8s集群对进行身份验证的方法,您还可以使用服务帐户进行身份验证,并进一步添加重新启动POD的方法。
如果您的集群在那里公开或代理,您也可以修补部署,这样也会自动重新启动部署(POD(。
curl -k --data '{"spec":{"template":{"metadata":{"annotations":{"kubectl.kubrnetes.io/restartedAt":"'"$(date +%Y-%m-%dT%T%z)"'"}}}}}' -XPATCH -H "Accept: application/json, */*" -H "Content-Type: application/strategic-merge-patch+json" localhost:8001/apis/extensions/v1beta1/namespaces/default/deployments/<name of deployment>
额外:
如果不想运行API,也可以在集群上运行kubectl命令,并从POD B重新启动POD A。
参考编号:https://itnext.io/running-kubectl-commands-from-within-a-pod-b303e8176088