如果我想为唯一的部署运行例如kubectl describe deployment <deployment_name>
,是否可以避免指定命名空间?或者名称空间参数总是强制性的?
要列出此类资源,可以使用名称为的字段选择器
kubectl get deployments --all-namespaces --field-selector='metadata.name=<deployment_name>'
描述:
kubectl get deployments --all-namespaces --field-selector='metadata.name=<deployment_name>' -oyaml | kubectl describe -f -
它是强制性的。关键是kubectl
正在使用Kubernetes
API来获得关于deployment
的信息。
响应kubectl describe deployment <deployment_name>
需要调用的URL为:
GET /apis/apps/v1/namespaces/{namespace}/deployments/{deployment_name}
因此,需要名称空间信息来构建URL。
从理论上讲,kubectl
工具可以列出集群中的所有部署并检索命名空间,但目前情况并非如此(我怀疑它永远不会如此(。
如果在命令中不使用名称空间参数,它将取自kubeconfig
中的活动上下文。据我所知,如果在当前命名空间中找不到请求的对象,就无法在其他命名空间上执行搜索。
尽管您可以在上下文中设置默认名称空间。如果要在同一个命名空间中执行多个命令,这将非常有用。为此:
kubectl config set-context --current --namespace=<insert-namespace-name-here>
之后,它将默认使用给定的命名空间。