我有一个连接到外部数据库的应用服务器的吊舱。为了冗馀,我希望运行多个POD,所以我使用rolingupdate策略将部署扩展到3个(MAXSURABE=1和MAXUNAVABLE=1)。
有时(大多数情况下)pods在第一次创建时失败,因为我使用的是liquibase,所有pods都试图同时锁定数据库。
Name: jx-apollon
Namespace: jx-staging
CreationTimestamp: Sun, 27 Oct 2019 21:28:07 +0100
Labels: chart=apollon-1.0.348
draft=draft-app
jenkins.io/chart-release=jx
jenkins.io/namespace=jx-staging
jenkins.io/version=4
Annotations: deployment.kubernetes.io/revision: 3
jenkins.io/chart: env
kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"extensions/v1beta1","kind":"Deployment","metadata":{"annotations":{"jenkins.io/chart":"env"},"labels":{"chart":"apollon-1.0...
Selector: app=jx-apollon,draft=draft-app
Replicas: 0 desired | 0 updated | 0 total | 0 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 1 max unavailable, 1 max surge
Pod Template:
Labels: app=jx-apollon
draft=draft-app
Init Containers:
postgres-listener-short:
Image: alpine
Port: <none>
Host Port: <none>
Command:
sh
-c
echo 'Waiting in init container for DB to become available.'; echo $DB; for i in $(seq 1 5); do echo 'nc ping' $i && nc -z -w3 $DB 5432 && echo 'DB is available, continuing now to application initialization.' && exit 0 || sleep 3; done; echo 'DB is not yet available.'; exit 1
Environment:
DB: jx-apollon-postgresql-db-alias
Mounts: <none>
postgres-listener-longer:
Image: alpine
Port: <none>
Host Port: <none>
Command:
sh
-c
echo 'Waiting in init container for DB to become available.'; echo $DB; for i in $(seq 1 100); do echo 'nc ping' $i && nc -z -w3 $DB 5432 && echo 'DB is available, continuing now to application initialization.' && exit 0 || sleep 3; done; echo 'DB is not yet available.'; exit 1
Environment:
DB: jx-apollon-postgresql-db-alias
Mounts: <none>
Containers:
apollon:
Image: <redacted>
Ports: 8080/TCP, 8443/TCP
Host Ports: 0/TCP, 0/TCP
Limits:
cpu: 2
memory: 6Gi
Requests:
cpu: 100m
memory: 3584Mi
Liveness: http-get http://:8080/ delay=60s timeout=1s period=10s #success=1 #failure=3
Readiness: http-get http://:8080/ delay=0s timeout=1s period=10s #success=1 #failure=3
Environment:
DB: jx-apollon-postgresql-db-alias
POSTGRES_PASSWORD: <redacted>
RULES_CLIENT: demo
_JAVA_OPTIONS: -XX:+UseContainerSupport -XX:MaxRAMPercentage=90.0 -XX:+UseG1GC
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
OldReplicaSets: <none>
NewReplicaSet: jx-apollon-95b4c77cb (0/0 replicas created)
Events: <none>
我将initContainer部分更改为以下代码,该代码一直等待,直到从LiquiBase创建的databasechangeloglock表中读取一个false值。
initContainers:
- name: postgres-listener
image: postgres
env:
- name: DB
value: jx-apollon-postgresql-db-alias
command: ['sh', '-c', '\
until psql -qtAX -h $DB -d postgres -c \
"select count(locked) from databasechangeloglock where locked = false group by locked";
do echo waiting for dbchangeloglock of postgres db to be false; sleep 2; done;
']
现在我们已经将服务部署为具有多个副本的库伯内特斯部署。一旦服务器崩溃,库伯内特斯将其容器迁移到另一台可用的服务器,该服务器的任务约为3~5分钟。 迁移时,客户端可以访问部署服务,因为我们还有其他正在运行的副本。但有时请求会失败,因为负载均衡器重定向到死亡或迁移容器。 如果Kubernetes能够自动启动死副本,并在其他服务器上运行后添加它们,那就太好了。否则,我们需要像haproxy一样设置LB,
环境说明 CentOS 7.4 购买自阿里云普通的 ECS 华南地区(如果你是购买美国地区的服务器,则直接使用 kubespray 原项目,那些镜像地址不用修改,其他照着文档即可) 所有机子都是干净的不需要先安装 Docker 等其他容器相关的东西 机器简称 内网 IP 地址 部署软件 系统环境 硬件配置 操作机 172.18.243.242 ansible CentOS 7.4 1 vCPU +
这是我第一次尝试将微服务体系结构部署到Kubernetes中。起初,我正在考虑使用大使作为我的API网关。我还有一个身份验证服务,它验证用户并生成JWT令牌,但是,每次调用服务时,我都需要验证这个令牌。这代表了一个过载问题(因为每次API网关接收流量时,它都会转到该外部身份验证服务以验证JWT令牌),并且大使没有选择在不使用外部服务的情况下执行此过滤。 在这种情况下,使用Zuul网关似乎是最好的选
在几乎所有面向业务的应用程序中,对文件中的数据进行排序或合并两个或多个文件是常见的必要条件。 排序用于按升序或降序排列记录,以便可以执行顺序处理。 有两种技术可用于在COBOL中对文件进行排序 - External sort用于通过使用JCL中的SORT实用程序对文件进行排序。 我们在JCL章节中讨论过这个问题。 截至目前,我们将专注于内部排序。 Internal sort用于对COBOL程序中的
我只是试图在一个名为“test”的名称空间中部署kubernetes仪表板。 https://raw.githubusercontent.com/kubernetes/dashboard/v1.8.3/src/deploy/recommended/kubernetes-dashboard.yaml kubectl应用-f Kubernetes-Dashboard.YAML-N测试 但是,它仍然试图
本系列文档介绍使用二进制部署最新 kubernetes v1.6.2 集群的所有步骤,而不是使用 kubeadm 等自动化方式来部署集群。 在部署的过程中,将详细列出各组件的启动参数,它们的含义和可能遇到的问题。 部署完成后,你将理解系统各组件的交互原理,进而能快速解决实际问题。 所以本文档主要适合于那些有一定 kubernetes 基础,想通过一步步部署的方式来学习和了解系统配置、运行原理的人。