1

我正在使用 kubectl 来控制本地 microk8s 安装。我配置了一个本地 Google 云 shell 连接,以避免通过 GKE 仪表板对可用的机器进行荒谬的配置。

现在,kubectl命令似乎在 microk8s 和 GKE 上随机执行。我不仅想解决这个问题,而且在未来禁止这种情况。

kubectl可以引用不同环境的可能性显然是建立在kubectlCLI 概念中的一个可怕的想法,它无法指定远程集群。它可能导致生产系统发生意外更改。即使是一个铁杆 12 因素的布道者也会安装一个本地集群用于开发。

4

2 回答 2

2

kubectl config use-context命令可用于修改 kubectl 与谁对话。

使用配置文件配置对多个集群的访问。在一个或多个配置文件中定义集群、用户和上下文后,您可以使用 . 配置访问多集群/

于 2019-06-12T19:49:12.520 回答
0

您可以为您的命令提供/添加--context--namespace选项以针对任何集群运行。如果您同时来回处理多个集群,这很方便。kubectlkubectl

kubectl --cluster=my_cluster --namespace=my_namespace get pods

注意:请为您的环境更改集群和命名空间名称。

这里有更多 kubectl 选项:

~/git/kubernetes (master) $ kubectl options
The following options can be passed to any command:

  --alsologtostderr=false: log to standard error as well as files
  --as='': Username to impersonate for the operation
  --as-group=[]: Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
  --cache-dir='/Users/robertrt/.kube/http-cache': Default HTTP cache directory
  --certificate-authority='': Path to a cert file for the certificate authority
  --client-certificate='': Path to a client certificate file for TLS
  --client-key='': Path to a client key file for TLS
  --cluster='': The name of the kubeconfig cluster to use
  --context='': The name of the kubeconfig context to use
  --insecure-skip-tls-verify=false: If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
  --kubeconfig='': Path to the kubeconfig file to use for CLI requests.
  --log-backtrace-at=:0: when logging hits line file:N, emit a stack trace
  --log-dir='': If non-empty, write log files in this directory
  --log-flush-frequency=5s: Maximum number of seconds between log flushes
  --logtostderr=true: log to standard error instead of files
  --match-server-version=false: Require server version to match client version
-n, --namespace='': If present, the namespace scope for this CLI request
  --request-timeout='0': The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests.
-s, --server='': The address and port of the Kubernetes API server
  --stderrthreshold=2: logs at or above this threshold go to stderr
  --token='': Bearer token for authentication to the API server
  --user='': The name of the kubeconfig user to use
-v, --v=0: log level for V logs
  --vmodule=: comma-separated list of pattern=N settings for file-filtered logging
于 2019-06-16T21:01:00.703 回答