虽然潜入Docker,Google Cloud和Kubernetes,但还没有清楚地理解它们中的所有三个,在我看来这些产品是重叠的,但它们不兼容.
例如,需要重新编写docker-compose文件,以便可以将应用程序部署到Kubernetes.
有人可以提供一个高级粗略描述Docker,Docker-Compose,Docker Cloud和Kubernetes重叠的位置以及哪一个依赖于另一个?
Kubernetes似乎都是将容器部署到集群云.它似乎没有触及的是开发和登台环境(或类似环境).
在开发期间,您希望尽可能接近生产环境并进行一些重要更改:
同样,人们可能希望非公共环境进行持续集成.
Kubernetes是否支持这种开发环境,或者是必须构建的东西,希望在生产过程中它仍然可以工作?
我正在弹性beanstalk上运行一个scala应用程序,服务器过量使用未旋转的容器日志.beanstalk的默认方案将docker日志旋转到/var/log/eb-docker/containers/eb-current-app/*文件夹中,但是其他日志正在累积/var/lib/docker/containers/<container-id>/*,因为它们没有旋转,磁盘会很快变满.
我已经尝试通过/etc/logrotate.elasticbeanstalk.hourly/logrotate.elasticbeanstalk.applogs.conf手动添加另一个logrotation claues来处理这个问题,这解决了这个问题.
但是,当我尝试使用.ebextension配置文件在每个实例beanstalk启动时实现更改时,更改的日志轮换文件不会出现在服务器上.
这是我的.config文件 -
files:
"/etc/logrotate.elasticbeanstalk.hourly/logrotate.elasticbeanstalk.applogs.conf":
mode: "000644"
content: |
/var/log/eb-docker/containers/eb-current-app/* {
size 10M
rotate 5
missingok
compress
notifempty
copytruncate
dateext
dateformat %s
olddir /var/log/eb-docker/containers/eb-current-app/rotated
}
/var/lib/docker/containers/*/*.log {
size 10M
rotate 5
missingok
compress
notifempty
copytruncate
dateext
dateformat %s
olddir /var/log/eb-docker/containers/eb-current-app/rotated
}
Run Code Online (Sandbox Code Playgroud)
我也尝试使用我在这篇reddit帖子中找到的最简单的配置文件形式 - https://www.reddit.com/r/aws/comments/2u3afj/elastic_beanstalk_issues_with_ebextensions/,但它也没有任何配置文件对我发起的实例的影响.
关于为什么我的配置不会影响环境的任何建议将不胜感激.
我开始使用 Ansible 编写一个剧本,为我们的应用程序部署临时环境。我试图了解对文件应用更改的最佳实践是否是在控制计算机上本地更改它们,然后将它们传播到远程服务器,或者是否应该在剧本内操作文件。
通过剧本操作文件在可读性和文档方面似乎更好,并且将整个配置过程保留在一个工具中以实现整个配置过程。另一方面,更改本地服务器上的文件更加容易和快捷。
解决这些问题的最佳方法是什么?
谢谢,亚龙。
尝试使用boto3来描述我的所有实例并过滤当前未运行的每个实例.使用这篇文章作为构建我的过滤器的参考 - http://rob.salmond.ca/filtering-instances-by-name-with-boto3/.
当我尝试使用此过滤器按状态过滤实例时 -
filters = [{
'Name': 'tag:State',
'Values': ['running']
}]
Run Code Online (Sandbox Code Playgroud)
查询返回空(这是有道理的,因为状态值嵌套在它自己的字典中.
我的问题是 - 如何使用filters参数访问嵌套标记?
尝试将一个值连接到我正在启动的 docker 容器中的现有环境变量。例如 -docker run -it -e PATH=$PATH:foo continuumio/anaconda
我目前正试图将一个值连接到PATH容器中已存在的现有环境变量。
PATH我期望在容器的环境变量中看到以下值-PATH=/opt/conda/bin:/usr/lib/jvm/java-8-openjdk-amd64/bin:/usr/local/scala/bin:/usr/local/sbt/bin:/usr/local/spark/bin:/usr/local/spark/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
相反,我得到这个 -PATH=$PATH:foo
使用docker run命令。无论如何可以实现我的目标吗?
- 编辑 -
我正在从 Windows 10 命令行窗口执行该命令。
直到大约一周前,我成功地在java图像上使用python 3.6脚本,如下所示:
FROM openjdk:7-jre-alpine
RUN apk update \
&& apk upgrade \
&& apk add --no-cache bash \
&& apk add --no-cache --virtual=build-dependencies unzip \
&& apk add --no-cache curl \
&& apk add --no-cache go
RUN apk add --no-cache python3 && \
python3 -m ensurepip && \
rm -r /usr/lib/python*/ensurepip && \
pip3 install --upgrade pip setuptools && \
if [ ! -e /usr/bin/pip ]; then ln -s pip3 /usr/bin/pip ; fi && \
if [[ ! -e /usr/bin/python …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个普罗米修斯指标,它可以让我监控吊舱在terminating消失之前在该状态中花费的时间。
我尝试过尝试,kube_pod_container_status_terminated但它似乎只在 pod 完成终止过程后才注册,但不能帮助我了解终止 pod 需要多长时间。
我也看过kube_pod_status_phase我不久前在这个频道中发现的内容,但它似乎也缺乏这种洞察力。
我目前正在使用 cAdvisor、kube-state-metrics 和 prometheus node-exporter 收集 k8s 工作负载的指标,但如果它们包含所需的数据,我很乐意考虑其他收集器。
非普罗米修斯的解决方案也很棒。
有任何想法吗?谢谢!
我编写了一个Python Flask应用程序,最初使用MySQLdb来访问MySQL。后来我出于同样的目的切换到flaskext.mysql,但现在当我使用这个模块时,我看不到如何获取字典结构的游标。
当我使用 MySQLdb 模块时,我使用以下行打开基于字典的游标 -
import MySQLdb as mdb
con = mdb.connect('localhost','root','root','transport')
with con:
cur = con.cursor(mdb.cursors.DictCursor)
Run Code Online (Sandbox Code Playgroud)
现在我尝试对flaskext.mysql做同样的事情,我当前的代码如下所示 -
from flaskext.mysql import MySQL
cur = mysql.get_db().cursor()
Run Code Online (Sandbox Code Playgroud)
为了获得相同类型的光标,我应该向光标对象提供什么?
我正在尝试迭代舵模板中的列表,并为每个成员添加后缀。我目前有这样的代码块:
{{- range $host := .Values.ingress.hosts }}
{{- $subdomain := initial (initial (splitList "." $host)) | join "." }}
{{- $topLevelDomain := last (splitList "." $host) }}
{{- $secondLevelDomain := last (initial (splitList "." $host)) }}
- host: {{- printf " %s-%s.%s.%s" $subdomain $environment $secondLevelDomain $topLevelDomain | trimSuffix "-" }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)
由于我需要在同一个文件中执行两次完全相同的操作,因此我想创建一个名为 的新列表$host-with-env,其中将包含我正在查找的后缀。这样我只能执行一次这个操作。
问题是 - 我不知道如何在 helm 中创建一个空列表 - 所以我无法将现有列表中的项目附加到新列表中。
知道我怎样才能实现这个目标吗?
我也可以更改现有列表,但我应用于列表的每个操作似乎都适用于我应用于它的 foreach 的范围。有什么想法如何解决这个问题吗?
docker ×5
kubernetes ×4
python-3.x ×2
alpine-linux ×1
amazon-ec2 ×1
ansible ×1
boto3 ×1
flask ×1
java ×1
mysql ×1
prometheus ×1
python ×1
yaml ×1