我使用 kops 作为 kubernetes 部署。
imagepullpolicy
我注意到,每当在部署文件中输入具有相同标签号的图像时,如果未设置为,系统就会采用前一个图像always
有什么方法可以查看 kubernetes 环境中容器的所有缓存图像吗?
假设我test:56
当前有一个部署中运行的映像并且之前test:1
使用test:55
过,那么 kubernetes 是否缓存这些映像?如果是,在哪里可以找到这些?
我最近将 StatefulSet 中的 podManagementPolicy 字段从默认(OrderedReady)更新为 Parallel。
我想知道我是否会遇到任何问题?
cloud kubernetes microservices kubernetes-statefulset kubernetes-pod
kubectl get pods --all-namespaces
提供所有 Pod 的列表。该列RESTARTS
显示 Pod 的重新启动次数。如何获取至少重启过一次的所有 pod 的列表?谢谢
我有一个kubernetes集群,有4个节点和一个主节点.我试图在所有节点中运行5 nginx pod.目前,调度程序有时在一台机器上运行所有pod,有时在不同的机器上运行.
如果我的节点发生故障并且我的所有pod都在同一节点中运行会发生什么?我们需要避免这种情况.
如何强制调度程序以循环方式在节点上运行pod,这样如果任何节点出现故障,那么至少在一个节点上应该有NGINX pod处于运行模式.
这可能吗?如果可能,我们如何实现这种情况?
出于调试和测试目的,我希望找到一种最方便的方法来启动 Kubernetes Pod 并即时更改其规范。
使用命令式命令启动部分非常简单。跑步
kubectl run nginx-test --image nginx --restart=Never
Run Code Online (Sandbox Code Playgroud)
给了我我想要的东西:不受 Deployment 或 ReplicaSet 等任何控制器管理的单个 Pod。易于玩耍和需要时清理。
但是,当我尝试使用以下命令编辑规范时
kubectl edit po nginx-test
Run Code Online (Sandbox Code Playgroud)
我收到以下警告:
pods "nginx-test" was not valid:
* spec: Forbidden: pod updates may not change fields other than spec.containers[*].image, spec.initContainers[*].image, spec.activeDeadlineSeconds or spec.tolerations (only additions to existing tolerations)
Run Code Online (Sandbox Code Playgroud)
即只有有限的 Pod 规范集在运行时是可编辑的。
到目前为止找到的选项:
将 Pod 规范保存到文件中:
kubectl get po nginx-test -oyaml > nginx-test.yaml
Run Code Online (Sandbox Code Playgroud)
编辑并重新创建
kubectl apply -f
Run Code Online (Sandbox Code Playgroud)
不过,只改变一个字段有点重。
创建部署而不是单个 Pod,然后编辑spec
部署本身的部分。
缺点是:
nginx-test-xxxxxxxxx-xxxx …
我们正在尝试使用 ECR 将 dot net core API 服务部署到亚马逊 EKS。部署成功,但 Pod 处于挂起状态。以下是我们遵循的详细步骤。
步骤随之而来。1. 创建了一个 docker 镜像 2. 将镜像推送到 ECR。该图像现在也可以在 aws 控制台中看到。// 图像看起来不错,我可以在本地使用我的 docker 运行它。
创建一个 t2-micro 集群如下 eksctl create cluster --name net-core-prod --version 1.14 --region us-west-2 --nodegroup-name standard-workers --node-type t2.micro --nodes 1 --nodes-min 1 --nodes-max 1 –managed // 集群和节点组创建成功。// IAM 角色也被创建
要点:
1. 我们使用的是 t2-micro 实例集群,因为它是 AWS 免费账户。 …
我有一个java API(接受HTTPS请求_打包成docker镜像,然后使用k8s集群部署在EC2之上。主EC2前面有一个ELB。
我可以向 ELB 发出 curl POST 请求,以便访问该 java API。
有时,即使当我看到 kube 日志时处理已成功,我的curl 请求也会永远等待响应。
对于 40 分钟左右的较大请求,会发生这种情况,25 分钟的请求可以获得正常响应。
您认为超时可能在哪里?我应该查看任何特定的配置参数吗?
客户端 (curl) --> ELB --> k8s --> 运行 java api 镜像的 pod
我认为这与 ELB 相关(我没有设置 IdleTimeout),但文档说默认值为 60 秒,尽管我可以获得 20 分钟请求的响应 "ConnectionSettings": { "IdleTimeout" }
我有一个 docker-compose 文件,其中包含我正在使用的安全工具的 2 个图像。我的挑战是将其转换为由 deployment.yaml 和 service.yaml 组成的 helm chart。docker-compose 看起来像这样 -
version: '3'
services:
nginx:
ports:
- "80:80"
- "443:443"
environment:
- NG_SERVER_NAME=192.168.1.228
links:
- tomcat8
image: continuumsecurity/iriusrisk-prod:nginx-prod-ssl
container_name: iriusrisk-nginx
volumes:
- "./cert.pem:/etc/nginx/ssl/star_iriusrisk_com.crt"
- "./key.pem:/etc/nginx/ssl/star_iriusrisk_com.key"
tomcat8:
environment:
- IRIUS_DB_URL=jdbc\:postgresql\://192.168.1.228\:5432/iriusprod?user\=iriusprod&password\=alongandcomplexpassword2523
- IRIUS_EDITION=saas
- IRIUS_EXT_URL=http\://192.168.1.228
- grails_env=production
image: continuumsecurity/iriusrisk-prod:tomcat8-2
container_name: iriusrisk-tomcat8
Run Code Online (Sandbox Code Playgroud)
也有一个 postgres 服务器在运行,我可以将其转换为舵图并将其公开给我的 ip (192.168.1.228) 端口 5432。但是对于相互链接的 iriusrisk 和 tomcat 图像,我无法想办法。这是我对两者的部署文件的解决方案。
部署-tomcat.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat
labels:
app: {{ .Values.tomcat.app.name }}
spec:
replicas: {{ .Values.tomcat.replicas }} …
Run Code Online (Sandbox Code Playgroud) docker docker-compose kubernetes-helm kubernetes-pod helmfile
我在 k9s 中设置了 3 个上下文(context1
、、context2
)context3
。我知道我可以通过键入来更改 k9s 中的上下文:context
,但是如何更改打开 k9s 时加载的默认上下文从context3
到context1
?
我们使用以下命令创建了 kubernetes 仪表板。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
kubectl patch svc -n kubernetes-dashboard kubernetes-dashboard --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"}]'
Run Code Online (Sandbox Code Playgroud)
创建了如下所示的仪表板-adminuser.yaml 文件。
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
Run Code Online (Sandbox Code Playgroud)
创建了 ClusterRoleBinding.yaml 文件,如下所示
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
Run Code Online (Sandbox Code Playgroud)
然后运行以下命令,最后我们得到了登录仪表板的令牌。
kubectl apply -f dashboard-adminuser.yaml
kubectl apply -f ClusterRoleBinding.yaml
kubectl -n kubernetes-dashboard create token admin-user
Run Code Online (Sandbox Code Playgroud)
但问题是我们生成的令牌在一小时后就过期了。如果仪表板注销,我们将无法再次使用相同的令牌。
那么我们可以创建一个没有到期日或至少 6 个月的代币吗?
创建长期使用令牌的命令/过程是什么?
另一件事是,现在我们可以在外部访问 kubernetes 仪表板,如下所示。
https://服务器 IP 地址:PORT_NUMBER
现在我们想要使用我们的网站 URL …
kubernetes google-kubernetes-engine kubernetes-dashboard kubernetes-pod
kubernetes-pod ×10
kubernetes ×9
docker ×2
kubectl ×2
amazon-ecr ×1
amazon-eks ×1
amazon-elb ×1
azure-aks ×1
cloud ×1
containers ×1
docker-image ×1
helmfile ×1
scheduler ×1