CoreOS Linux引入了Kubernetes kubelet

jopen 9年前發布 | 18K 次閱讀 CoreOS

本文為 CoreOS官方博客發布的新聞和說明,介紹了 CoreOS 中對 Kubernetes 的核心組件 kubelet 的集成和支持。通過在 CoreOS 中安裝和使用 Kubelet ,演示了 Kubelet 的使用技巧,演示了如何在 Kubernetes 中更好的管理和監控容器資源 。

這周我們在 CoreOS Linux 的 alpha 開發版集成了 kubelet——Kubernetes 的一個核心內嵌組件。 Kubelet 負責維護 pod(應用實例)集合。Pod 集合由本地系統的一個或多個容器構成。在 Kubernetes 集群中,kubelet 用于作為本地代理,通過訪問 Kubernetes 的 API 服務器,監控 PodSpecs 的狀態。kubelet 也負責注冊節點到 Kubernetes,發送事件和 pod 狀態,匯報資源利用率。

kubelet 在 Kubernetes 集群中扮演重要角色的同時,也可以在單機模式工作。這篇文章接下來將會重點介紹在單機模式也即運行 Kubernetes 集群的但節點下使用 Kubelet 的技巧,和如何借助 cAdvisor 內建工具利用 Kubelet 監控容器資源利用率。

首先我們要安裝 kubelet 并運行起來。請在 CoreOS Linux 773.1.0 或更新版本中使用本指南。

用 systemd 配置 Kubelet

CoreOS Linux 默認合理集成了 kubelet,并做了安全性優化和易用性優化。但我們將會放寬安全限制以支持高級容器。這需要在單節點 Kubernetes 上跑代理組件,該組件需要iptables 的操作權限,以方便配置 Kubernetes 的服務發現模型。

創建 kubelet systemd(系統管理守護進程) 單元

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</pre>

啟動 kubelet 服務

放置好 systemd 單元文件后,使用 systemctl 命令啟動 kubelet

sudo systemctl daemon-reload
sudo systemctl start kubelet

為確保 kubelet 能開機自啟動,需要激活服務:

sudo systemctl enable kubelet

這時 kubelet 服務應該已經跑起來。你可以用 systemctl 狀態命令確認:

sudo systemctl status kubelet

啟動一個單節點 Kubernetes 集群

kubelet 為本地系統管理容器提供了一個便利的接口。Kubelet 提供一個清單(manifest)字典,每20秒被監控一次以更新 pod 的 manifest 文件。在這之前, 在 kubelet systemd 單元中需要使用—config標志,配置文件目錄 /etc/kubernetes/manifests。

Pod manifest 文件用 JSON 或 YAML 文件格式化并描述文件卷集合和一個或多個容器。我們可以使用一個在 manifest 目錄的 pod manifest,部署一個單節點 Kubernets 集群。

下載 Kubernetes pod manifest

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 客戶端工具。

下載 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

用 cAdvisor 監控容器

kubelet 內置打包了 cAdvisor, 它用于收集,合計,處理并導出給定系統的運行中容器的信息。cAdvisor 包含內置 web 接口,可通過4194端口訪問。

[ cadvisor web 界面 ]

 CoreOS Linux引入了Kubernetes kubelet

通過 cAdvisor web UI ,可很方便查看系統資源利用狀況和處理列表。

[ 系統利用狀況圖 ]

 CoreOS Linux引入了Kubernetes kubelet

cAdvisor 也可用于監控特殊容器,例如 在 Kubernetes pod 里運行的 kube-apiserver:

[ 用 cadvisor查看容器信息 ]

 CoreOS Linux引入了Kubernetes kubelet

想了解更多 cAdvisor 信息請翻閱 upstream docs

CoreOS 和 Kubernetes的更多信息

CoreOS Linux 鏡像中集成 kubelet 表明我們對(支持) Kubernetes 的承諾和要為我們用戶帶來最好的開源容器技術的(決心)。原生支持了 Kubernetes kubelet ,我們希望提升 Kubernetes 的部署效率,并提供健壯的接口以管理和監控 CoreOS 系統上的容器。

如果你對 Kubernetes 有興趣,請務必出席在你的城市即將開展的 Kubernetes 的一些培訓。更多安排會提上日程并回顧記錄。如果你想要私人的在線培訓,請 聯系我們

原文鏈接:Introducing the Kubernetes kubelet in CoreOS Linux(翻譯:沈冠璞)
來自:http://dockone.io/article/604

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!