OpenShift Origin 疑难杂症

  • 1.Pod 启动时一直处在 Container Creating状态
  • 2.Pod数量限制
  • 3. 无法弹性伸缩
  • 4. Docker Hub 下载镜像

1.Pod 启动时一直处在 Container Creating状态

The pod has been stuck in the pending state for more than five minutes

  1. 检查Pod内部能不能访问网络,Creating状态的Pod是不能通过终端访问的,如果你的服务器还有其他的Pod,看看启动是不是正常,从终端连进去试试网络。
  2. 检查Pod 是否用到了Persistent Volume 需要创建
  3. 可能是Persistent Volume无法访问到,如果是网络服务,检查相关存储的状态,以及防火墙状态。如果在防火墙上设置允许某些服务访问网络而不是直接指定端口,那防火墙必须保持开启状态。

2.Pod数量限制

我使用All-In-One的运行方式,发现最多只能使用20个pod,查阅官方文档发现可以设置每个node最大的pod数量
https://docs.openshift.org/latest/admin_guide/manage_nodes.html#admin-guide-max-pods-per-node

因为我是直接解压运行,所以node-config.yaml位置是在:
/home/openshift/openshift.local.config/node-example.com/node-config.yaml

但是我按照文档的说法做了以下设置 没有生效

kubeletArguments:
  max-pods:
    - "250"

试了很多遍,发现要同时设置pods-per-core参数才可以,会取其中的最小值

kubeletArguments:
  pods-per-core:
    - "150"
  max-pods:
    - "250"

注意一定要按照官方文档的缩进格式,用空格缩进

3. 无法弹性伸缩

要想实现AutoScaler 除了必须设置pod的Resources Limit,设置AutoScaler条件之外,还得安装度量组件(Metrics)才行。

安装Metrics参见 https://github.com/openshift/origin-metrics

先把这个项目用git clone下来。

官方建议通过ansible安装,但由于我是在单服务器上解压Binary压缩包配置运行的,ansible用起来比较麻烦,就采用官方不推荐的旧办法了,通过安装一个Pod (metrics-deployer)自动化部署。

参见https://github.com/openshift/origin-metrics/blob/master/docs/deployer_installation.adoc

按照文档操作很简单,但是里面有坑,metrics-deployer运行时有版本错误,我需要说一下过程,不过这篇文档是事后写的,有点忘了,大致是这个样子。

有一个命令是 oc process -f metrics.yaml …是用来安装metrics-deployer的。
这个oc process 貌似也出错了,记不清了,我按照《开源容器云平台OpenShift》这本书所说,运行下面这个命令
别忘了把apps.example.com改成你自己的域名

oc new-app --template=metrics-deployer-templete \
-p HAWKULAR_METRICS_HOSTNAME=hawkular-metrics.apps.example.com \
-p IMAGE_PREFIX=openshift/origin \
-p USE_PERSISTENT_STORAGE=false

运行并查看pod日志发现运行脚本有错误,命令不存在,考虑到从docker hub下载的是最新版本, 也就是3.9版,而我的openshift 版本是3.7.1,大概是因为需要安装对应版本的才行。

好在 oc process -f metrics.yaml 后面还有参数,可以指定版本号:IMAGE_VERSION。需要上面的命令最后加上

-p IMAGE_VERSION=xxx \

参数说明 https://github.com/openshift/origin-metrics/blob/master/docs/deployer_configuration.adoc#deployer-template-parameters

去Docker Hub找 openshift/origin-metrics-deployer ,不好意思我已经忘了用的哪个版本了,应该是v3.7.0-rc.0 或者 v3.7.2 。运行后提示的错误是:命令的参数不存在,坑就在这,我试了7、8个版本没有一个能用的。

下载这个docker镜像的速度是很慢的,推荐使用镜像加速,使用镜像的方法在下一节。

解决办法是通过origin 的控制台 找到 openshift-infra 这个项目的pod: “metrics-deployer”,从debug in terminal 进入ssh,通过dockerfile找到命令运行脚本,删除缺少的参数,最后在这个调试环境的ssh运行一下,metrics就会被部署上。

当然,上面这还有一个前提,你得能看到openshift-infra 这个项目,如果看不到,通过下面的方式给当前用户受个cluster-admin权限(我是用的admin用户)

oc adm policy add-cluster-role-to-user cluster-admin admin

最后再补充一个坑,按照文档一切设置好之后,你会发现在控制台的deployments里,current usage获取不到,因此还是不能实现AutoScaler
OpenShift Origin 疑难杂症_第1张图片

这应该是个bug,不支持部署类型是DeploymentConfig 的容器,换成ReplicationController就行了。3.7版本是这样,这个bug 貌似 3.9 就修复了。

4. Docker Hub 下载镜像

DaoCloud 有个镜像加速器非常好用,首先要注册一个daocloud帐号,就会拿到这个加速的地址 xxxx.m.daocloud.io

https://www.daocloud.io/mirror

编辑配置文件 /etc/sysconfig/docker ,然后重启docker

OPTIONS 的后面加上 --registry-mirror=http://xxxxxx.m.daocloud.io

这里写图片描述

你可能感兴趣的:(云计算,openshift-v3)