我在我的 Mac 上安装了 minikube,并为我的 Nodejs 应用程序创建了部署和服务。我通过使用以下命令获取服务的 URL 来测试一切正常:
minikube service my-nodejs-app --url
Run Code Online (Sandbox Code Playgroud)
然后我在浏览器中运行这个 URL 并得到结果。问题是当我尝试从同一网络内的另一台计算机访问相同的 URL 时,它不起作用。
我的service.yml文件是:
apiVersion: v1
kind: Service
metadata:
name: my-nodejs-app
spec:
type: NodePort
ports:
- port: 80
targetPort: 1337
protocol: TCP
name: app-server
selector:
app: my-nodejs-app
Run Code Online (Sandbox Code Playgroud)
我尝试使用端口转发将 pod 端口转发到本地主机,它仅在托管集群的同一台机器上工作,并且当我尝试从同一网络上的另一台机器访问时(通过集群所在机器的 IP 地址)已部署)我仍然找不到页面。
我正在尝试创建服务kubernetes,但尽管没有打印错误,但我无法列出该服务;
本地工作minikube
*$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4h
/home/pkara/Workspace/gitlab/my-minikube
*$ kubectl apply -f mydb.yaml
service/mydatabase unchanged
/home/pkara/Workspace/gitlab/my-minikube
*$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4h
Run Code Online (Sandbox Code Playgroud)
这是使用的清单:
---
apiVersion: v1
kind: Service
metadata:
name: mydatabase
namespace: esa-local-dev
labels:
app: mydatabase
spec:
ports:
- name: mydatabase-port
port: 3306
targetPort: 3306
selector:
app: mydatabase
clusterIP: None
---
apiVersion: apps/v1
kind: Deployment
metadata: …Run Code Online (Sandbox Code Playgroud) 是否有任何命令可以恢复到资源上以前的配置?
例如,如果我以声明方式创建了服务类资源,然后手动更改端口,如何丢弃实时更改,以便重新应用创建资源的原始定义?
是否有对以前应用的配置的任何跟踪?如果我们可以说:将我的服务重新配置为当前的应用配置 - 2 版本,那就更好了。
编辑:我知道部署有推出选项,但我想知道一种明智的机制
我正在使用GCP Composer来管理 GCP 上的 Apache。
对于新项目,我使用新版本的 Composer/Airflow(composer:1.6.1,Airflow:1.10)
要通过 shell 连接气流以检查损坏的 DAG,GCP 文档说明:
打开 GCP shell
连接到 GKE 集群
myuser @cloudshell:~ kubectl 获取 pod
myuser @cloudshell:~ kubectl exec -it airflow-worker- 1a2b3c - xyz12 -c airflow-worker -- /bin/bash
这在 Airflow 1.9 上工作正常,但在 Airflow 1.10 上kubectl get pods不显示工作 pod,而且我还没有找到有关如何在 AF 1.10 上通过 kubeclt 访问气流的文档
有人可以帮助我吗?
_myuser_@cloudshell:~ (_Myproject_)$ kubectl get pods
NAME READY STATUS RESTARTS AGE
airflow-monitoring-564c8c7dc5-hxb62 1/1 Running 0 17h
airflow-redis-0 1/1 Running 0 17h
airflow-sqlproxy-594dbf87b7-nmtbh 1/1 …Run Code Online (Sandbox Code Playgroud) 获取 kubernetes 中资源配额值的一种方法是使用以下命令
>kubectl describe resourcequotas
Name: default-quota
Namespace: my-namespace
Resource Used Hard
-------- ---- ----
configmaps 19 100
limits.cpu 13810m 18
limits.memory 25890Mi 36Gi
Run Code Online (Sandbox Code Playgroud)
但问题是这以文本文件格式显示所有值。任何人都知道我如何获得 json 格式!
当然,我可以解析输出并获取单个条目并构造 json。
kubectl describe quota | grep limits.cpu | awk '{print $2}'
13810m
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一些内置的东西或一些快速的方法来做到这一点。感谢您的帮助。
假设我们在deployment.yml中有这个
containers:
- name: my_container
imagePullPolicy: Always
image: my_image:latest
Run Code Online (Sandbox Code Playgroud)
因此,重新部署可能采取以下形式:
kubectl set image deployment/my-deployment my_container=my_image
Run Code Online (Sandbox Code Playgroud)
我从这里偷来的:
我的问题是 - 这是进行滚动更新的正确方法吗?上述内容是否始终可以确保部署获得新映像?我的deployment.yml可能永远不会改变——它可能my_image:latest永远不变,那么如何进行滚动更新呢?
我想循环遍历kubectl get nodes命令中的节点名称
并在Bash.
我正在尝试从我的另一个 pod 访问所有命名空间和 pod。因此,我创建了 clusterrole、clusterrolebinding 和 service account。我能够访问唯一的客户命名空间资源。但我需要访问所有命名空间资源。是否可以?
apiVersion: v1
kind: ServiceAccount
metadata:
name: spinupcontainers
namespace: customer
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: spinupcontainers
namespace: customer
rules:
- apiGroups: [""]
resources: ["pods", "pods/exec"]
verbs: ["get", "list", "delete", "patch", "create"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: spinupcontainers
namespace: customer
subjects:
- kind: ServiceAccount
name: spinupcontainers
roleRef:
kind: ClusterRole
name: spinupcontainers
apiGroup: rbac.authorization.k8s.io
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助解决这个问题吗?
提前致谢
我正在尝试使用 jq 提取 kubeconfig 数据。
kubectl config view --raw -o json | jq ...
有一个这样的json:
{
"kind": "Config",
"apiVersion": "v1",
"preferences": {},
"clusters": [
{
"name": "some-name",
"cluster": {
"server": "https://some-url",
"certificate-authority-data": "some-cert"
}
},
{
"name": "another-name",
"cluster": {
"server": "https://another-url",
"certificate-authority-data": "another-cert"
}
}
],
"users": [
{
"name": "some-name",
"user": {
"username": "some-user",
"password": "some-password"
}
},
{
"name": "another-name",
"user": {
"username": "another-user",
"password": "another-password"
}
}
],
"contexts": [],
"current-context": "some-context"
}
Run Code Online (Sandbox Code Playgroud)
问题 1: 对于给定的名称,“some-name”,我想提取 …
我知道之前问过这个问题,我检查了它们但仍然失败。
Pod 名称:postgresl-7c8b9-qs67z
pod 中的文件:/home/backup/db
所以我想尝试将“db”文件复制到我的本地,我尝试使用下面的命令,但所有这些都给出了相同的错误。
kubectl cp default/postgresl-7c8b9-qs67z:/home/backup/db C:\Users\myuser\Desktop\mydb1.dmp
kubectl cp default/postgresl-7c8b9-qs67z:/home/backup/ C:\Users\myuser\Desktop\
kubectl cp postgresl-7c8b9-qs67z:/home/backup/db C:\Users\myuser\Desktop\mydb1.dmp
Run Code Online (Sandbox Code Playgroud)
错误是:
error: one of src or dest must be a local file specification
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?谢谢!
kubectl ×10
kubernetes ×8
minikube ×2
airflow ×1
amazon-eks ×1
azure ×1
bash ×1
jq ×1
json ×1
worker ×1