把玩OpenShift系列(二)

把玩OpenShift系列(二)

本节主要包含的内容是Registry。

Registry: 也就是集成在OpenShift内的一个容器私有仓库,用来存放打包后制作的镜像。

部署Registry

在用Ansible搭建平台的时候,已经在infra节点上自动部署了Registry Pod,如果是通过其它的部署方式部署Okd,可能需要手动的部署这个。

访问Registry

通过oc命令或者kubectl命令可以看到Registry服务的ip

-w734

如何直接访问到这个Registry,文档上是这么描述的

For any direct access, you must have a regular user for your preferred identity provider. A regular user can generate an access token required for logging in to the registry. System users, such as system:admin, cannot obtain access tokens and, therefore, cannot access the registry directly.

我的平台是使用的 HTPASSWD authentication

创建用户

1
htpasswd /etc/origin/openshift-htpasswd <user_name>

为这个用户绑定registry读写角色

1
2
3
oc policy add-role-to-user registry-viewer <user_name>

oc policy add-role-to-user registry-editor <user_name>

使用创建的账户进行登录到Okd

1
oc login

登录到Registry

1
docker login -u openshift -p $(oc whoami -t) <registry_ip>:<port>

需要注意的是,一旦使用这个账号登录到Okd之后,后面所有的命令操作都是以该用户的身份操作,会出现很多命令无权限,再次获得系统管理员身份使用

1
oc login -u system:admin

如果docker login成功之后,可以测试一下镜像的push&pull。

在折腾Registry的过程中,并不是很顺利,遇到的问题后面再详细描述。

安全与暴露

安全

原本我以为通过Ansible安装的Registry不支持Https的,所欲按照文档操作手动配置证书的过程中,发现这部分已经在平台搭建的时候安装好了,所以做了一些无用功

当然可能也还有一点用,就是自带的Https看起来没有提供对Ip的直接登录,手动创建证书时,把ip也带上了,所以后面能通过ip:port直接登录到Registry。

配置细节略过,看文档,非常详细。

暴露

其实就是添加了一个路由,比较简单,略过

扩展配置

这一部分有一个重点就是镜像文件的存储,默认是用的FileSystem,但在实际生产中,往往会使用其他的存储方案,这一部分后面再研究。

遇到的问题

docker无法登录到registry

  1. 问题描述

    无法通过 docker loginregistry,提示 TLS handshake timeout

  2. 问题分析

    由于我使用的是OpenStack虚拟的云主机构建的这个平台,按照以前操作k8s和容器的经验,估计这个和mtu值有关,因为一般的Linux操作系统默认的MTU值是1500,而Openstack云主机mtu值是1450。

  3. 解决方法

    网上各种搜,各种尝试,解决问题的过程很不爽,最终运气不错,在这里找到了问题的解决方法。

    修改

    1
    2
    3
    4
    5
    6
    # cat /etc/origin/node/node-config.yaml
    ...
    networkConfig:
    mtu: 1450
    networkPluginName: company/openshift-ovs-subnet
    ...

    修改mtu到1400

    重启

    1
    systemctl restart origin-node.service

    重启之后

    -w1013

    观察Node节点tun0mtu并没有变化,这算不算一个bug,算了,这样至少问题解决了

    对于SDN网络这一块,还不太懂,后面再研究。

    Optimizing Network Performance

    补充

    通过修改系统内文件的配置,发现修改不能生效,继续解决

    Modifying Nodes

    原来这部分配置已经集成到ConfigMap中了,通过编辑ConfigMap,改完后重启所有节点,ok

    1
    2
    3
    oc get cm -n openshift-node
    //修改所有的
    oc edit cm node-config-compute -n openshift-node

参考

1. okd官方文档

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×