做者: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的一些培訓。更多安排會提上日程並回顧記錄。若是你想要私人的在線培訓,請聯繫咱們。