Kubernetes----Pod配置容器启动命令

本文详细介绍了如何在Kubernetes中使用Pod配置文件创建一个忙碌Box容器,定期写入时间戳。步骤包括编写配置、创建资源、验证操作并删除资源。重点讲解了command和args的区别以及资源管理命令的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【原文链接】

一、启动命令

1.1 编写配置文件

创建pod_command.yaml文件,并编写如下内容,即在容器启动之后,向 、opt/text.txt文件写入时间戳,执行命令主要通过command字段传入,类型为列表格式

apiVersion: v1
kind: Namespace
metadata:
  name: dev

---

apiVersion: v1
kind: Pod
metadata:
  name: pod-command
  namespace: dev
  labels:
    user: redrose2100
spec:
  containers:
  - name: busybox
    image: busybox:1.30
    command: ["/bin/sh","-c","touch /tmp/hello.txt;while true;do /bin/echo $(date +%T) >> /tmp/hello.txt;sleep 3;done;"]

1.2 创建资源

使用如下命令创建namespace和pod资源

[root@master pod]# kubectl apply -f pod_command.yaml
namespace/dev created
pod/pod-command created
[root@master pod]#

1.3 进入容器检查数据

如下,进入容器中,并查看 /tmp/hello.txt文件内容,如下,表示已经成功执行命令

[root@master pod]# kubectl get pod -n dev
NAME          READY   STATUS    RESTARTS   AGE
pod-command   1/1     Running   0          6s
[root@master pod]# kubectl exec pod-command -n dev -it -c busybox /bin/sh
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
/ # tail -n 5 /tmp/hello.txt
15:13:58
15:14:01
15:14:04
15:14:07
15:14:10
/ #

1.4 关于kubernetes中command和args的参数说明:

  • 如果command和args都没写,则使用dockerfile中的配置
  • 如果command写了,但是args没写,那么dockerfile默认配置会被忽略,执行输入的command
  • 如果command没写,但是args写了,那么dockerfile中配置的ENTRYPOINT的命令会被执行,使用当前args的参数
  • 如果command和args都写了,那么dockerfile的配置被忽略,执行command追加上args参数

1.5 删除资源

使用如下命令删除资源

[root@master pod]# kubectl delete -f pod_command.yaml
namespace "dev" deleted
pod "pod-command" deleted
[root@master pod]#
### Kubernetes Dashboard 启动失败的原因分析与解决方案 当 Kubernetes Dashboard 无法正常启动时,通常可能是由于 RBAC 权限不足、资源配置错误或其他运行时问题引起的。以下是针对此问题的具体原因分析以及对应的解决方案。 #### 1. 检查 Pod 的状态 首先可以通过以下命令查看 `kubernetes-dashboard` Pod 的当前状态: ```bash kubectl get pods -n kubernetes-dashboard ``` 如果发现 Pod 处于 `CrashLoopBackOff` 或其他异常状态,则需要进一步排查其具体原因[^1]。 --- #### 2. 查看 Pod 日志 通过获取 Pod 的日志信息,可以初步判断是否存在初始化阶段的错误: ```bash kubectl logs <pod-name> -n kubernetes-dashboard ``` 例如: ```bash kubectl logs kubernetes-dashboard-7c54d59f66-wvxnc -n kube-system ``` 如果没有找到任何有用的信息或者日志为空白,则可能需要尝试其他方法进行深入诊断[^3]。 --- #### 3. 调试模式下的容器检查 为了更细致地了解容器内部的情况,可以使用调试工具进入容器并手动执行操作: ```bash kubectl run -i --tty --rm debug \ --image=k8s.gcr.io/kubernetes-dashboard-amd64:v2.x.x \ --namespace=kubernetes-dashboard \ /bin/sh ``` 在此环境中,可以验证环境变量设置是否正确、文件路径是否存在以及其他潜在问题[^4]。 --- #### 4. 验证 RBAC 配置 Kubernetes Dashboard 的正常运行依赖于正确的 Role 和 ClusterRole 绑定。如果权限不足可能导致服务不可用或崩溃。确认是否有如下资源被正确定义: ##### (a) ServiceAccount 定义 确保已经创建了一个用于管理 dashboard 的 ServiceAccount 并绑定到合适的角色上。 ```yaml apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard ``` ##### (b) 更新 YAML 文件中的 RBAC 设置 重新部署 dashboard 之前,请仔细核对其官方文档中提到的相关参数配置是否匹配实际需求[^2]。 --- #### 5. 修改 RestartPolicy 参数 对于某些场景下频繁重启的问题,可考虑调整 Deployment 中定义的 restart policy 属性,默认情况下它会被设为 Always 。不过,在特殊测试环境下也可以临时改为 OnFailure 或 Never 进行观察效果如何变化。 编辑对应对象描述符文件后应用更改即可生效: ```yaml spec: template: spec: containers: ... restartPolicy: Always # 可选值 {Always,OnFailure,Never} ``` --- #### 总结 综上所述,解决 Kubernetes Dashboard 启动失败的关键在于逐步定位根本原因并通过适当手段修复之——无论是修正不当的安全上下文还是优化镜像拉取逻辑等方面都值得逐一探索直至恢复正常运作为止[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

redrose2100

您的鼓励是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值