在pod中的容器中,如何使用kubectl运行命令?例如,如果我需要在容器内执行类似的操作:
kubectl获得pods
我试过这个:在我的dockerfile中,我有这些命令:
RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
RUN chmod +x ./kubectl
RUN sudo mv ./kubectl /usr/local/bin/kubectl
Run Code Online (Sandbox Code Playgroud)
编辑:我正在尝试OSX文件,我已将其更正为Linux二进制文件.(由@svenwltr更正
在创建docker文件时,这很成功,但是当我在容器内运行kubectl get pods时,
kubectl get pods
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
与服务器的连接:被拒绝 - 您是否指定了正确的主机或端口?
当我在本地部署时,如果我的docker-machine没有运行,我遇到了这个错误,但是在容器内部如何运行docker-machine?
在本地,我通过运行以下命令来解决此错误:(dev是docker-machine的名称)
docker-machine env dev
eval $(docker-machine env dev)
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我,我需要做什么?
我确定我错过了一些明显的东西.我查看了Kubernetes上ScheduledJobs/CronJobs的文档,但是我找不到按计划执行以下操作的方法:
我有其他方法可以做到这一点,但他们感觉不对.
安排一个cron任务:kubectl exec -it $(kubectl get pods --selector = some-selector | head -1)/ path/to/script
创建一个具有"Cron Pod"的部署,该部署也包含应用程序,以及许多"Non Cron Pod",它们只是应用程序.Cron Pod将使用不同的图像(一个安排了cron任务).
如果可能的话,我宁愿使用Kubernetes ScheduledJobs来防止同一个Job同时运行多次,也因为它让我感觉更合适.
有没有办法通过ScheduledJobs/CronJobs来做到这一点?
我有 6 个正在运行的 pod 副本,我想每 5 分钟重新启动\重新创建一次。
这需要是一个滚动更新 - 这样所有的都不会立即终止并且没有停机时间。我如何实现这一目标?
我尝试使用 cron 作业,但似乎不起作用:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: scheduled-pods-recreate
spec:
schedule: "*/5 * * * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
spec:
containers:
- name: ja-engine
image: app-image
imagePullPolicy: IfNotPresent
restartPolicy: OnFailure
Run Code Online (Sandbox Code Playgroud)
尽管作业已成功创建并按照以下说明进行调度,但它似乎从未运行过:
Name: scheduled-pods-recreate
Namespace: jk-test
Labels: <none>
Annotations: <none>
Schedule: */5 * * * *
Concurrency Policy: Forbid
Suspend: False
Starting Deadline Seconds: <unset>
Selector: <unset>
Parallelism: <unset>
Completions: <unset>
Pod Template:
Labels: <none>
Containers:
ja-engine:
Image: …Run Code Online (Sandbox Code Playgroud) 是否可以根据创建时间或年龄删除kubernetes中的POD?
示例:我想删除所有早于1天的POD。这些POD是孤立的,因此不会创建新的POD。