从 kubectl 生成 permanentVolume、perpetualVolumeClaim 和 storageClass 正确的 yaml 文件的最快方法是什么?

Min*_*ieh 4 kubernetes

两年前我参加CKA考试时,我就已经有这个问题了。当时我只能看k8s.io官方文档。现在只是对通过纯 kubectl cli 生成 pv / pvc / storageClass 感到好奇。我寻找的是与部署类似的逻辑,例如:

$ kubectl create deploy test --image=nginx --port=80 --dry-run -o yaml
W0419 23:54:11.092265   76572 helpers.go:553] --dry-run is deprecated and can be replaced with --dry-run=client.
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: test
  name: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: test
    spec:
      containers:
      - image: nginx
        name: nginx
        ports:
        - containerPort: 80
        resources: {}
status: {}
Run Code Online (Sandbox Code Playgroud)

或运行单个 Pod 的类似逻辑:

$ kubectl run test-pod --image=nginx --port=80 --dry-run -o yaml
W0419 23:56:29.174692   76654 helpers.go:553] --dry-run is deprecated and can be replaced with --dry-run=client.
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: test-pod
  name: test-pod
spec:
  containers:
  - image: nginx
    name: test-pod
    ports:
    - containerPort: 80
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
Run Code Online (Sandbox Code Playgroud)

那么我应该输入什么才能生成 pv / pvc / storageClass yaml ?目前唯一的声明式最快方式:

cat <<EOF | kubectl create -f -
<PV / PVC / storageClass yaml goes here>
EOF
Run Code Online (Sandbox Code Playgroud)

编辑:请注意,我寻找任何快速方法来生成正确的 pv / pvc / storageClass 模板,而无需通过 cli 记住特定语法,并且不需要通过 kubectl 。

Min*_*ieh 6

长话短说:

考试前,在 Github 目录 (content/en/examples/pods) 中的所有 yaml 文件中查看、添加书签并建立索引。根据CKA课程,100%合法。

https://github.com/kubernetes/website/tree/master/content/en/examples/pods/storage/pv-volume.yaml

然后在考试期间使用此表格:

kubectl create -f https://k8s.io/examples/pods/storage/pv-volume.yaml
Run Code Online (Sandbox Code Playgroud)

如果您需要编辑并应用:

# curl
curl -sL https://k8s.io/examples/pods/storage/pv-volume.yaml -o /your/path/pv-volume.yaml
# wget
wget -O /your/path/pv-volume.yaml https://k8s.io/examples/pods/storage/pv-volume.yaml

vi /your/path/pv-volume.yaml
kubectl apply -f /your/path/pv-volume.yaml
Run Code Online (Sandbox Code Playgroud)

故事:

实际上,在寻找我自己的答案之后,有一篇文章建议我为这些 100% 合法的页面添加书签:

https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/#create-a-persistentvolume

https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/#creating-a-cron-job

https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/

注意:

kubectl apply -f https://k8s.io/examples/pods/storage/pv-volume.yaml
Run Code Online (Sandbox Code Playgroud)
  1. kubectl 可以从 URL 创建对象
  2. 原来的https://k8s.io指向哪里?
  3. 我还能从哪些方面受益?

然后在挖掘出“pods/storage/pv-volume.yaml”上面的页面代码后,链接指向:

https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/pods/storage/pv-volume.yaml

哪个直接到:

https://github.com/kubernetes/website/tree/master/content/en/examples/pods

所以https://k8s.io是一个缩短的 uri 以及一个到https://github.com/kubernetes/website/tree/master/content/en的 http 301 重定向,以帮助考生轻松生成(不是复制-n-paste)在考试终端中。