我查看了使用kubectl edit
命令编辑kubernetes资源的文档。执行命令后,在编辑器中打开YAML格式的文件,我可以根据需要更改值并保存。我试图通过sed
执行这些步骤。如何实现以下步骤?
kubectl edit
true
设置为false
(使用sed)我试图通过以下方式实现这一目标:
$ kubectl edit deployment tiller-deploy -n kube-system | \
sed -i "s/\(automountServiceAccountToken:.*$\)/automountServiceAccountToken: true/g"`
答案 0 :(得分:4)
您的命令缺少反引号。但即使你把它放在那里,它也行不通。原因是当你执行upstream
时,它会在vim上编辑文件。我不确定sed会在vim上工作。即使它确实如此,输出也会转到文件中,因此您会收到git pull upstream master
git merge upstream/master
git rebase upstream/master
错误,我不知道如何解决。
我建议你获取文件并保存。替换所需的参数并再次运行:
kubectl edit ...
我尝试了上面的命令并且有效。
注意:无需添加Vim: Warning: Output is not to a terminal
,因为yaml文件已包含命名空间。
答案 1 :(得分:3)
我刚刚发现了一种不太复杂的方法:
KUBE_EDITOR="sed -i s/SOMETHING TO CHANGE/CHANGED/g" kubectl edit resource -n your-ns
答案 2 :(得分:1)
感谢@suren提供我真正想要的内容,但您无需将其保存在文件中。您可以直接通过管道执行 private void button5_Click(object sender, EventArgs e)
{
using (cnn = new SqlConnection(v))
{
using (cmd = new SqlCommand("DELETE FROM Table_Group WHERE age = @age", cnn))
{
cmd.Parameters.RemoveAt(comboBox1.SelectedIndex);
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cnn.Close();
cmd.Dispose();
}
}
}
kubectl replace
答案 3 :(得分:0)
我不知道kubectl但是doc似乎解释说它提取数据,从编辑器编辑而不是发回,在这种情况下不确定sed管道工作
如果管道吵闹 不要使用-i,不要更改管道中的文件
kubectl edit deployment tiller-deploy -n kube-system | \
sed 's/automountServiceAccountToken:.*$/automountServiceAccountToken: true/g'
如果编辑文件(并使用sed中的组)
kubectl edit deployment tiller-deploy -n kube-system > YourCOnfigFile && \
sed -i 's/\(automountServiceAccountToken:\).*$/\1 true/g' YourConfigFile \
&& Some kubectl to send back YourConfigFile
答案 4 :(得分:0)
我通过sed
命令通过管道命令来实现自动化,而无需创建临时文件。以下面的示例为例,其中我将8.8.8.8
替换为名称服务器1.1.1.1
$ kubectl -n kube-system get configmap/kube-dns -o yaml | sed "s/8.8.8.8/1.1.1.1/" | kubectl replace -f -