我需要使用 kubectl 命令的集群 ID。
root@vagrant-xenial64:~# kubectl get cm cluster-info -n kube-system -o jsonpath='{.data.cluster-config\.json}'
{
"cluster_id": "xxx",
"cluster_name": "prod-yyy-mmm",
"cluster_type": "rrr",
"cluster_pay_tier": "vvv",
"datacenter": "cse",
"account_id": "456777",
"created": "2018-06-32323dffdf:35:48+0000"
}
Run Code Online (Sandbox Code Playgroud)
我需要cluster-id这个特殊的 json
root@vagrant-xenial64:~# kubectl get cm cluster-info -n kube-system -o jsonpath='{.data.cluster-config\.json.cluster_id}'
root@vagrant-xenial64:~#
Run Code Online (Sandbox Code Playgroud)
以上命令返回空字符串。我也尝试了许多其他组合
我正在尝试从 shell 脚本在 postgres 容器内执行命令。这是我到目前为止:
kubectl exec -it <postgres_pod> -n <deployment> -- bash -c "psql -U postgres -d database -c 'select count from table where name='FOO';'"
我收到以下错误:
ERROR: column "foo" does not exist
LINE 1: select count from table where name=FOO;
^
查询在容器内运行良好,因此我传递命令的方式一定有问题。我确实尝试了另一个查询:
kubectl exec -it <postgres_pod> -n <deployment> -- bash -c "psql -U postgres -d database -c 'select * from table;'"
Run Code Online (Sandbox Code Playgroud)
这运行良好。所以,我猜这与我传递 where 子句的方式有关where name='FOO'。我怎样才能让它发挥作用。请帮帮我。
更新:
尝试使用以下方法进行转义:
1:双引号
kubectl exec -it <postgres_pod> -n <deployment> -- bash -c …
从 Kubernetes 集群中的主节点,我可以运行kubectl get nodes并查看集群上任何单个节点的状态,因为kubectl可以找到用于身份验证的集群证书。在我的本地工作站上,假设我的身份验证配置正确,我也可以这样做。
从加入到 Kubernetes master的节点,有没有什么方法可以配置身份验证以便kubectl工作,我可以识别节点是处于Ready还是Not Ready状态?
我正在尝试构建一些驻留在节点本身上的监控工具,我想避免设置服务帐户等只是为了检查节点状态,以防万一我可以通过某种方式识别它kubelet、日志、节点上某处的文件、命令等...
我想将 env vars 传递到exec命令中。
到目前为止,我已经尝试了以下
SOME_VAR="A String"
kubectl exec -it a-pod-name -- sh -c 'env NEW_VAR=$SOME_VAR; echo $NEW_VAR > some-file-name.txt'
Run Code Online (Sandbox Code Playgroud)
我意识到kubectl cp如果我想复制文件,我可以使用,但这不适合我的用例。
我无法从我的机器连接到任何 GKE 集群。从远程机器上,它可以工作,但不是我的,我不知道为什么。如果你们中的一些人有任何想法......
我kubectl已从 gcloud ( gcloud components install kubectl) 中安装
我正在运行gcloud init,然后在现有集群或新创建的集群上运行gcloud container clusters create my-cluster --preemptible --cluster-version 1.12.7-gke.10 --machine-type n1-standard-1 --disk-size 20 --num-nodes 1
我正在检索我的凭据,gcloud container clusters get-credentials my-cluster --zone europe-west1-b --project my-project-123456它为我的kubectl. 切换到它(使用kubectx)。
但是当我尝试联系我的集群(例如kubectl get pods)时,它失败并显示以下消息:
无法连接到服务器:x509:由未知权威签名的证书
我只是不明白为什么我的本地人kubectl无法验证 Google CA。我遵循了我找到的所有资源,在其他区域/区域中尝试了其他集群,使用了不同版本的 python(2.7 和 3.6),重新初始化 gcloud,使用了另一个 Google 帐户,另一个版本的 kubectl(1.11、1.12 和 1.14) ),sudo update-ca-certificates在 Linux (Mint 19.1 Tessa) 中更新我的 CA ( )。 …
我正在研究 Kubernetes 集群上的自动化,并且需要创建一个 API 来封锁节点。基本上这个 API 不应该允许任何新的 pod 进入封锁节点。
我经历了下面的堆栈溢出讨论,但无法弄清楚封锁(然后排空)节点所需的 API: 如何在 Go 中访问 Kubernetes API 并运行 kubectl 命令
我是 kubernetes 的新手,并试图了解何时使用 kubectl autoscale 和 kubectl scale 命令
我知道我可以定义这样的东西来在我的容器中获取 pod 名称:
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
Run Code Online (Sandbox Code Playgroud)
但是当我运行时: $kubectl get pods
我有一个不同的结果,例如:uipod-5d6795db87-cxxkg对应于<replicatset name>-cxxkg.
是否可以将全名 ( uipod-5d6795db87-cxxkg) 作为环境变量?而不仅仅是 pod 名称 ( uipod)。
非常感谢
我们将如何修改 kubernetes 中的默认历史限制。此时,默认的历史限制是 3 个修订版。我想将其增加 10。
我使用下面的命令来获取修订历史
kubectl rollout history deployment <deployment name>
我是 kubernetes 的初学者。我正在尝试安装 minikube 想在 kubernetes 中运行我的应用程序。我正在使用 ubuntu 16.04
我已按照此处提供的安装说明进行操作 https://kubernetes.io/docs/setup/learning-environment/minikube/#using-minikube-with-an-http-proxy
问题 1:安装 kubectl、virtualbox 和 minikube 后,我运行了命令
minikube start --vm-driver=virtualbox
Run Code Online (Sandbox Code Playgroud)
它因以下错误而失败
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
E0912 17:39:12.486830 17689 start.go:305] Error restarting
cluster: restarting kube-proxy: waiting for kube-proxy to be
up for configmap update: timed out waiting for the condition
Run Code Online (Sandbox Code Playgroud)
但是当我检查 virtualbox 时,我看到 minikube VM 正在运行,当我运行 kubectl 时 …
kubectl ×10
kubernetes ×9
bash ×1
gcloud ×1
jsonpath ×1
minikube ×1
monitoring ×1
virtualbox ×1