Sco*_*and 4 amazon-web-services kubernetes
当我在 aws 上使用 kubernetes/cluster/kube-up.sh 部署每个应用程序时,我使用以下方法设置上下文:
CONTEXT=$(kubectl config view | grep current-context | awk '{print $2}')
kubectl config set-context $CONTEXT --namespace=${PROJECT_ID}
Run Code Online (Sandbox Code Playgroud)
我为多个应用程序执行此操作,并且每个应用程序都可以正常部署。但是,我需要能够在 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"
}
Run Code Online (Sandbox Code Playgroud)
你可以在上面看到我已经部署了两个应用程序......当我尝试选择我的 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.
Run Code Online (Sandbox Code Playgroud)
然后当我发出类似的命令时它就会挂起
kubectl describe pods --namespace=primacyofdirectexperience
Run Code Online (Sandbox Code Playgroud)
也许我缺少设置用户的命令,因为在上面的 json 中,每个部署的应用程序都有自己的用户名???
更新
kubectl config use-context gke_primacyofdirectexperience_us-east1-b_loudhttpscluster
... outputs
switched to context "gke_primacyofdirectexperience_us-east1-b_loudhttpscluster".
Run Code Online (Sandbox Code Playgroud)
但是现在当我发出任何 kubectl 命令时......例如
kubectl get pods
.... outputs
Unable to connect to the server: x509: certificate signed by unknown authority
Run Code Online (Sandbox Code Playgroud)
这是我以前从未见过的错误......毫无疑问是由于切换问题
即使出现上述错误消息,/kubernetes/cluster/kube-down.sh 也能够拆除集群,因此希望切换能够正常工作!
要在上下文之间切换,请使用use-context:
kubectl config use-context gke_primacyofdirectexperience_us-east1-b_loudhttpscluster
Run Code Online (Sandbox Code Playgroud)
现在应用的任何 kubectl 命令都将应用于该集群(使用primacyofdirectexperience命名空间,因为您将其设置为集群的默认值)。
kubectl get pods
Run Code Online (Sandbox Code Playgroud)
现在将获得命名空间gke_primacyofdirectexperience_us-east1-b_loudhttpscluster上的所有 pod primacyofdirectexperience。要使用不同的命名空间,您可以应用 namspace 标志:
kubectl get pods --namespace=someothernamespace
Run Code Online (Sandbox Code Playgroud)
要再次切换上下文,只需use-context再次运行:
kubectl config use-context aws_kubernetes
Run Code Online (Sandbox Code Playgroud)
现在,
kubectl get pods
Run Code Online (Sandbox Code Playgroud)
将aws_kubernetes使用default命名空间在集群上运行。
您始终可以kubectl通过运行来查看当前正在使用的上下文:
kubectl config current-context
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4272 次 |
| 最近记录: |