本文为管理维护长期运行的集群的工程师提供一些建议和提示。
本文假定您对 Juju 和 Kubernetes 已经有了基本的了解。
Juju 控制器:
指定参数创建一个控制器(命令行如下):
juju bootstrap --constraints "mem=8GB cpu-cores=4 root-disk=128G"
Juju 将会选择与目标云上的约束匹配的最便宜的实例类型。
还可以通过将 instance-type
与 root-disk
两个约束结合使用来进行严格控制。
对于可用的约束信息,请参阅 官方文档
关于日志记录的更多信息,请参阅 日志章节
默认情况下,Juju 将创建一对 SSH 密钥,用于自动化单元之间的连接。
这对密钥保存在客户端节点的 ~/.local/share/juju/ssh/
路径下。
部署完后,Juju 控制器是一个 “无声单元”, 其充当客户端和已部署应用程序之间的代理。 尽管如此,SSH 到控制器上还是很有用的。
首先,你需要了解你的运行环境,特别是如果你运行了几个 Juju 模型和控制器。
运行下面的命令行:
juju list-models --all
$ juju models --all
Controller: k8s
Model Cloud/Region Status Machines Cores Access Last connection
admin/controller lxd/localhost available 1 - admin just now
admin/default lxd/localhost available 0 - admin 2017-01-23
admin/whale* lxd/localhost available 6 - admin 3 minutes ago
第一行的 Controller: k8s
表明是如何引导创建的控制器。
接着可以看见下面列了 2 个,3 个或更多的类型。
现在开始 ssh 到控制节点上,首先是让 Juju 切换上下文,然后是像一般单元那样 ssh 到控制节点上:
juju switch controller
在这个阶段,也可以查询控制器模型:
juju status
Model Controller Cloud/Region Version
controller k8s lxd/localhost 2.0.2
App Version Status Scale Charm Store Rev OS Notes
Unit Workload Agent Machine Public address Ports Message
Machine State DNS Inst id Series AZ
0 started 10.191.22.15 juju-2a5ed8-0 xenial
请注意,如果是在 HA 模式下进行的引导, 会在列表中看到几台机器。
现在 ssh 到控制器节点上,遵循和经典 Juju 命令相同的语义:
$ juju ssh 0
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.8.0-34-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
0 packages can be updated.
0 updates are security updates.
Last login: Tue Jan 24 16:38:13 2017 from 10.191.22.1
ubuntu@juju-2a5ed8-0:~$
在结束完操作,想要返回到最初的模型,退出控制器即可。
如果,还想要切换回集群,ssh 到其他单元上,运行下面的命令行进行切换:
juju switch default
默认情况下,juju 部署的集群不支持在带有 GPU 的节点上运行特权容器。
如果需要在其它节点上运行特权容器,只能是在 kubernetes-master 和 kubernetes-worker 节点上
使能 allow-privileged
参数:
juju config kubernetes-master allow-privileged=true
juju config kubernetes-worker allow-privileged=true
通过 registry 操作,您可以很容易地创建一个使用 TLS 身份验证的私有 docker 仓库。 但是请注意,通过这些功能部署的仓库不是高可用性的; 它使用的存储绑定到运行 pod 的 kubernetes 节点上。 因此,如果仓库所在的 pod 从一个节点迁移到另一个节点上, 那么你需要重新发布镜像。
创建相关的身份验证文件。
例如用户为 userA
密码为 passwordA
用来进行身份验证,
命令行如下:
echo "userA:passwordA" > htpasswd-plain
htpasswd -c -b -B htpasswd userA passwordA
(htpasswd
程序通过 apache2-utils
包获得)
假设您的仓库可以通过 myregistry.company.com
访问,
您已经在 registry.key
文件中拥有了您的 TLS 密钥,
并且您的 TLS 身份验证(以 myregistry.company.com
作为 Common Name)在
juju run-action kubernetes-worker/0 registry domain=myregistry.company.com htpasswd=“$(base64 -w0 htpasswd)” htpasswd-plain=“$(base64 -w0 htpasswd-plain)” tlscert=“$(base64 -w0 registry.crt)” tlskey=“$(base64 -w0 registry.key)” ingress=true
<!-- If you then decide that you want to delete the registry, just run: -->
如果决定删除镜像仓库,命令行如下:
juju run-action kubernetes-worker/0 registry delete=true ingress=true ```
此页是否对您有帮助?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.