使用Kubernetes进行练习。
是否可以仅通过YAML
创建Bash
部署对象及其配置?
我已经尝试过了:
kubectl create -f deployment.yaml
创建一个Yaml,以便以后编辑。但是,它仅显示
error: the path "deployment.yaml" does not exist
答案 0 :(得分:2)
我看到了两种简单的方法:
echo
。示例:echo "
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
" > deployment.yaml
使用 kubectl 创建资源,然后将其输出到yaml:
kubectl创建部署nginx --image = nginx --replicas = 1
kubectl获得部署nginx --export = true -o yaml
答案 1 :(得分:1)
如错误所述,它找不到文件的位置
如果通过脚本运行文件,则应指定文件所在的路径
如果仅通过命令行运行,则指定的文件不在执行命令的目录中
#!/bin/bash
DEPLOYMENT_LOCATION="~/deployments"
kubectl create -f "$DEPLOYMENT_LOCATION/deployment.yaml"
或者相对于您的脚本
#!/bin/bash
SCRIPT_DIR="`dirname \"$0\"`"
kubectl create -f "$SCRIPT_DIR/deployments/deployment.yaml"
答案 2 :(得分:1)
即使您不必为此创建部署,也可以运行以下命令来生成nginx部署。
kubectl create deployment mynginx --image=nginx -o yaml --dry-run > /tmp/mydeployment.yaml
cat /tmp/mydeployment.yaml
现在,您可以编辑此Yaml文件以添加更多详细信息。但这为您提供了一个基本的结构。
答案 3 :(得分:1)
到目前为止,所有答案都建议实际部署到集群,然后检索正在运行的部署。
使用--dry-run
可以获取对象的YAML格式,而无需实际部署任何内容。例如:
kubectl create deployment nginx --image=nginx --dry-run -o yaml
将部署YAML输出到stdout:
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: nginx
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
resources: {}
status: {}
答案 4 :(得分:0)
您可以运行kubectl create deployment my-deployment --image=my-image
然后,如果需要清单:
kubectl get deployment my-deployment --output=yaml
答案 5 :(得分:0)
如果我正确理解了您的问题,听起来您正在尝试以YAML的形式检索当前部署,以便您可以进行尝试。
这是我认为您需要的命令:
kubectl get deployments -o yaml
答案 6 :(得分:0)
您可以使用此模板创建不带bash的部署 猫<
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
EOF
答案 7 :(得分:0)
vim deployment.yaml
输入文件内容kubectl create -f deployment.yaml
这在通过终端创建时有效