我正在尝试eksctl使用适当的 IAM 权限启用自动缩放在 AWS EKS 集群上创建 Kubernetes 。根据文档:
您可以使用 IAM 角色创建一个集群(或现有集群中的节点组),以允许使用集群自动缩放器:
eksctl create cluster --asg-access
我正在努力奔跑
eksctl create cluster --asg-access -f myconfig.yml
Run Code Online (Sandbox Code Playgroud)
但收到此错误:
[?] cannot use --asg-access when --config-file/-f is set
Run Code Online (Sandbox Code Playgroud)
他们是--asg-access在配置文件中使用的一种方式吗?我尝试在配置文件架构文档中查找相关配置无济于事。
它们是 Kubernetes 水平 pod 自动缩放中的配置,用于指定在向上/向下扩展之前运行或创建 pod 的最小延迟吗?
例如像这样的东西:
# I am looking for a flag like this
--horizontal-pod-autoscale-initial-upscale-delay=5m0s
# Similar to these existing flags
--horizontal-pod-autoscaler-downscale-delay=2m0s
--horizontal-pod-autoscaler-upscale-delay=2m0s
Run Code Online (Sandbox Code Playgroud)
结果是:
我有一种情况,即 Pod 在启动时消耗大量资源进行引导(这是预期的),但我不希望它在此期间扩展,一旦引导完成,它可能有资格进行自动扩展。
使用 Ansible,我试图在剧本级别定义某种默认变量 - 让我们称之为剧本默认值- 它优先于角色默认值,但可以被库存清单group_vars/所有变量覆盖。
如何定义某种剧本默认变量,该变量优先于角色默认值,但同时可以被清单(环境)覆盖?
目前 Ansible 2.x 变量优先级如下:
- 角色默认值
- 库存文件或脚本组变量
- 库存组_vars/全部
- 剧本 group_vars/all
我希望实现的目标是:
- 角色默认值
- 剧本默认值
- 库存文件或脚本组变量
- 库存组_vars/全部
- 剧本 group_vars/all
从我之前使用的大多数工具和应用程序来看,在环境级别(开发、测试、QA、产品等)定义的变量优先于“应用程序”变量,而“应用程序”变量本身优先于“外部”组件。那么优先顺序如下:
环境具有最高优先级。但我找不到用 Ansible 重现这种模式的方法。这些事情在 Chef(外部说明书默认值被包装器说明书默认值覆盖)和 Puppet 中很容易,但我找不到使用 Ansible 实现相同目的的方法。
让我们考虑一个由多个与 Web 服务器交互的服务组成的应用程序。这些服务是通用的,并在我组织的其他部分中重复使用,但就我而言,我使用了 apache2。我有这些角色:
这些默认变量:
# roles/apache/defaults/main.yml
apache_listen_port: 80
# roles/green_service/defaults/main.yml
green_service_port: 80
# roles/blue_service/defaults/main.yml
blue_service_port: 80
# roles/red_service/defaults/main.yml
red_service_port: 80
Run Code Online (Sandbox Code Playgroud)
每个服务都必须知道 apache 端口,这在默认值中表示。如果其他应用程序需要 Nginx 或其他网络服务器的绿色服务,则只需包含相关角色即可。
现在,如果我想在一个或多个环境中将端口从 …
我尝试在 Travis-CI 上为多个架构构建一个 docker 镜像。这对于 amd64 和 i386 非常有效,但对于 ARM 却失败了。
在顶部的Dockerfile构建{ARCH}/nextcloud:apache是建立在顶部php:7.3-apache-stretch再次使用debian:stretch-slim。所以所有的图像都使用相同的堆栈并且应该做出相似的反应。
.travis.yml
env:
- TAG=i386 ARCH=i386
- TAG=amd64 ARCH=amd64
- TAG=armhf ARCH=arm32v7
- TAG=aarch64 ARCH=arm64v8
before_script:
- docker run --rm --privileged multiarch/qemu-user-static:register --reset
script:
- docker build --pull --build-arg ARCH=$ARCH -t escoand/nextcloud:$TAG nextcloud
Run Code Online (Sandbox Code Playgroud)
文件
ARG ARCH
FROM ${ARCH}/nextcloud:apache
RUN apt-get update && apt-get install -y supervisor && \
rm -rf /var/lib/apt/lists/* && \
mkdir /var/log/supervisord /var/run/supervisord
Run Code Online (Sandbox Code Playgroud)
如前所述,i386 和 amd64 的构建没有问题。ARM 构建已通过第一个 RUN 命令失败: …
根据Ubuntu 16.04和其他发行版的 Certbot 文档,据说软件包中安装了一个 cron 作业,可以自动更新证书:
您系统上的 Certbot软件包附带一个 cron 作业,该作业将在证书过期之前自动更新您的证书。由于 Let's Encrypt 证书的有效期为 90 天,因此强烈建议利用此功能。
但是,我找不到有关此主题的任何相关文档,并且在按照同一页面(版本 0.19.0)上的 certbot 安装说明进行操作后,我找不到在 crontab 上配置的任何 cron 作业。这个功能真的存在吗?如果是,如何找到并配置它?
注意:我在尝试使用钩子配置自动续订时发现了这篇文档。我可以手动配置 cron 作业,但使用内置的自动更新功能似乎更合适。
kubernetes ×2
amazon-eks ×1
ansible ×1
ansible-2.x ×1
certbot ×1
cron ×1
docker ×1
eksctl ×1
lets-encrypt ×1
linux ×1
multiarch ×1
travis-ci ×1