gpt4 book ai didi

amazon-web-services - 如何在各种已部署应用程序的 kubernetes 上下文之间切换?

转载 作者:行者123 更新时间:2023-12-04 08:07:19 24 4
gpt4 key购买 nike

当我在 aws 上使用 kubernetes/cluster/kube-up.sh 部署每个应用程序时,我使用以下方法设置上下文:

CONTEXT=$(kubectl config view | grep current-context | awk '{print $2}')

kubectl config set-context $CONTEXT --namespace=${PROJECT_ID}

我为多个应用程序执行此操作,并且每个应用程序都可以正常部署。但是,我需要能够在 kubernetes 上下文之间切换以与任意部署的应用程序交互(查看日志/执行 kubectl exec )

这是显示我所有上下文的方法
kubectl config view --output=json

{
"kind": "Config",
"apiVersion": "v1",
"preferences": {},
"clusters": [
{
"name": "aws_kubernetes",
"cluster": {
"server": "https://52.87.88.888",
"certificate-authority-data": "REDACTED"
}
},
{
"name": "gke_primacyofdirectexperience_us-east1-b_loudhttpscluster",
"cluster": {
"server": "https://104.196.888.888",
"certificate-authority-data": "REDACTED"
}
}
],
"users": [
{
"name": "aws_kubernetes",
"user": {
"client-certificate-data": "REDACTED",
"client-key-data": "REDACTED",
"token": "taklamakan"
}
},
{
"name": "aws_kubernetes-basic-auth",
"user": {
"username": "admin",
"password": "retrogradewaif"
}
},
{
"name": "gke_primacyofdirectexperience_us-east1-b_loudhttpscluster",
"user": {
"client-certificate-data": "REDACTED",
"client-key-data": "REDACTED",
"username": "admin",
"password": "emptyadjacentpossible"
}
}
],
"contexts": [
{
"name": "aws_kubernetes",
"context": {
"cluster": "aws_kubernetes",
"user": "aws_kubernetes",
"namespace": "ruptureofthemundaneplane"
}
},
{
"name": "gke_primacyofdirectexperience_us-east1-b_loudhttpscluster",
"context": {
"cluster": "gke_primacyofdirectexperience_us-east1-b_loudhttpscluster",
"user": "gke_primacyofdirectexperience_us-east1-b_loudhttpscluster",
"namespace": "primacyofdirectexperience"
}
}
],
"current-context": "aws_kubernetes"
}

你可以在上面看到我已经部署了两个应用程序......当我尝试选择我的 kubernetes 上下文时
kubectl config set-context  gke_primacyofdirectexperience_us-east1-b_loudhttpscluster  --namespace=${PROJECT_ID}

... outputs
context "gke_primacyofdirectexperience_us-east1-b_loudhttpscluster" set.


kubectl config set-cluster "gke_primacyofdirectexperience_us-east1-b_loudhttpscluster"

... outputs
cluster "gke_primacyofdirectexperience_us-east1-b_loudhttpscluster" set.

然后当我发出类似的命令时它就会挂起
kubectl describe pods --namespace=primacyofdirectexperience 

也许我缺少设置用户的命令,因为在上面的 json 中,每个部署的应用程序都有自己的用户名???

更新
kubectl config use-context gke_primacyofdirectexperience_us-east1-b_loudhttpscluster

... outputs
switched to context "gke_primacyofdirectexperience_us-east1-b_loudhttpscluster".

但是现在当我发出任何 kubectl 命令时......例如
kubectl get pods 

.... outputs
Unable to connect to the server: x509: certificate signed by unknown authority

这是我以前从未见过的错误......毫无疑问是由于切换问题

即使出现上述错误消息,/kubernetes/cluster/kube-down.sh 也能够拆除集群,因此希望切换能够正常工作!

最佳答案

要在上下文之间切换,请使用 use-context :

kubectl config use-context gke_primacyofdirectexperience_us-east1-b_loudhttpscluster

现在应用的任何 kubectl 命令都将应用于该集群(使用 primacyofdirectexperience 命名空间,因为您将其设置为集群的默认值)。
kubectl get pods

现在将获得所有 pod gke_primacyofdirectexperience_us-east1-b_loudhttpsclusterprimacyofdirectexperience命名空间。要使用不同的命名空间,您可以应用 namspace 标志:
kubectl get pods --namespace=someothernamespace

要再次切换上下文,只需运行 use-context再次:
kubectl config use-context aws_kubernetes

现在,
kubectl get pods

将在 aws_kubernetes 上运行集群,使用 default命名空间。

您始终可以看到哪个上下文 kubectl目前正在通过运行使用:
kubectl config current-context

关于amazon-web-services - 如何在各种已部署应用程序的 kubernetes 上下文之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39169427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com