做者:Kelsey Hightowerlinux
2015年8月14日 nginx
这周咱们在 CoreOS Linux 的 alpha 开发版集成了 kubelet——Kubernetes 的一个核心内嵌组件。Kubelet 负责维护 pod(应用实例)集合。Pod 集合由本地系统的一个或多个容器构成。在 Kubernetes 集群中,kubelet 用于做为本地代理,经过访问 Kubernetes 的 API 服务器,监控 PodSpecs 的状态。kubelet 也负责注册节点到 Kubernetes,发送事件和 pod 状态,汇报资源利用率。git
kubelet 在 Kubernetes 集群中扮演重要角色的同时,也能够在单机模式工做。这篇文章接下来将会重点介绍在单机模式也即运行 Kubernetes 集群的但节点下使用 Kubelet 的技巧,和如何借助 cAdvisor 内建工具利用 Kubelet 监控容器资源利用率。github
首先咱们要安装 kubelet 并运行起来。请在 CoreOS Linux 773.1.0 或更新版本中使用本指南。web
CoreOS Linux 默认合理集成了 kubelet,并作了安全性优化和易用性优化。但咱们将会放宽安全限制以支持高级容器。这须要在单节点 Kubernetes 上跑代理组件,该组件须要iptables 的操做权限,以方便配置 Kubernetes 的服务发现模型。docker
sudo vim /etc/systemd/system/kubelet.service
[Unit] Description=Kubernetes Kubelet Documentation=https://github.com/kubernetes/kubernetes [Service] ExecStartPre=/usr/bin/mkdir -p /etc/kubernetes/manifests ExecStart=/usr/bin/kubelet \ --api-servers=http://127.0.0.1:8080 \ --allow-privileged=true \ --config=/etc/kubernetes/manifests \ --v=2 Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
放置好 systemd 单元文件后,使用 systemctl 命令启动 kubeletvim
sudo systemctl daemon-reload sudo systemctl start kubelet
为确保 kubelet 能开机自启动,须要激活服务:api
sudo systemctl enable kubelet
这时 kubelet 服务应该已经跑起来。你能够用 systemctl 状态命令确认:安全
sudo systemctl status kubelet
kubelet 为本地系统管理容器提供了一个便利的接口。Kubelet 提供一个清单(manifest)字典,每20秒被监控一次以更新 pod 的 manifest 文件。在这以前, 在 kubelet systemd 单元中须要使用—config标志,配置文件目录 /etc/kubernetes/manifests。bash
Pod manifest 文件用 JSON 或 YAML 文件格式化并描述文件卷集合和一个或多个容器。咱们能够使用一个在 manifest 目录的 pod manifest,部署一个单节点 Kubernets 集群。
wget https://raw.githubusercontent.com/coreos/pods/master/kubernetes.yaml
在互联网下载 pod manifest 会有潜在安全风险,因此请确保在使用它们以前检查全部 pod manifest 的内容。
cat kubernetes.yaml
此时咱们只须要拷贝 kubernetes.yaml 这个 pod manifest 到 kubelet 的 manifest 目录以启动单节点集群。
sudo cp kubernetes.yaml /etc/kubernetes/manifests/
复制完成后,你能够使用标准 Docker 命令行工具看到Docker镜像和容器启动:
sudo docker images sudo docker ps
几分钟后你就有了一个运行的 Kubernetes 集群。接下来下载官方的 Kubernetes 客户端工具。
kubectl 是官方的命令行工具,用于和 Kubernetes 集群交互。每一个 Kubernetes 的发行版都包含一个新的 kublet 版本。下载并更改它为可执行程序:
wget https://storage.googleapis.com/kubernetes-release/release/v1.0.3/bin/linux/amd64/kubectl chmod +x kubectl
kubectl 可用于获取运行的集群信息。
./kubectl cluster-info
Kubernetes master 运行在 http://localhost:8080
kubectl 也可用于启动 pods
./kubectl run nginx --image=nginx
用 get pods 命令查看运行的 pods:
./kubectl get pods
更多 Kubernets 细节请翻阅 Kubernetes on CoreOS docs.
kubelet 内置打包了 cAdvisor, 它用于收集,合计,处理并导出给定系统的运行中容器的信息。cAdvisor 包含内置 web 接口,可经过4194端口访问。
cadvisor web 界面.
经过 cAdvisor web UI ,可很方便查看系统资源利用情况和处理列表。
System utilization information.
cAdvisor 也可用于监控特殊容器,例如 在 Kubernetes pod 里运行的 kube-apiserver:
用 cadvisor查看容器信息.
想了解更多 cAdvisor 信息请翻阅 upstream docs.
CoreOS Linux 镜像中集成 kubelet 代表咱们对(支持) Kubernetes 的承诺和要为咱们用户带来最好的开源容器技术的(决心)。原生支持了 Kubernetes kubelet ,咱们但愿提高 Kubernetes 的部署效率,并提供健壮的接口以管理和监控 CoreOS 系统上的容器。
若是你对 Kubernetes 有兴趣,请务必出席在你的城市即将开展的Kubernetes的一些培训。更多安排会提上日程并回顾记录。若是你想要私人的在线培训,请联系咱们。