为什么kubectl创建仅支持某些资源?

时间:2019-08-22 08:52:41

标签: kubernetes kubectl

我希望通过命令行kubectl为特定资源(pvs,pvcs,策略等)创建yaml文件。

kubectl create仅支持创建某些资源类型(即clusterroles,clusterrolebindings,configmaps,cronjobs,部署,作业,名称空间,pod中断预算,优先级类,配额,角色,角色绑定,机密,服务和服务帐户) 。

为什么它不支持pod,pvs,pvcs等?

我知道kubectl run --generator=run=pod/v1用于广告连播,但是是否有未将其添加到kubectl create的特定原因?

我搜索了docs和github问题,但找不到解释。

我知道诸如ksonnet之类的工具,但是我想知道是否存在一种本机方式(或没有这种方式的原因)。

1 个答案:

答案 0 :(得分:2)

您可以使用kubectl create创建任何类型的对象。为此,您有两种解决方案:

  1. 使用文件描述符:kubectl create -f my-pod-descriptor.yml
  2. 使用stdin(实际上文件内容在控制台中):
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
  name: busybox-sleep
spec:
  containers:
  - name: busybox
    image: busybox
    args:
    - sleep
    - "1000000"
EOF

现在回到问题所在,例如为什么他们不添加kubectl create pod命令。我真的没有答案。
我的猜测是,直接管理 pods 并不是一个好习惯。建议改为使用部署。并且您有一个kubectl create deployment命令。

关于其他物体,例如 pv或pvc ,该怎么办?好吧,我不知道:)

请记住,从控制台创建/管理所有内容并不是一个好习惯,因为您将无法保存正在执行的操作的历史记录。优先使用在SCM中管理的文件。

因此,我想K8S团队不会在不推荐的程序或命令上投入过多精力。对我来说很好。