如何在CoreOS集成Kubernetes核心组件Kubelet
2015-10-20 14:39
537 查看
这周我们在CoreOS Linux的alpha开发版中集成了kubelet——Kubernetes的一个核心内嵌组件。Kubelet负责维护pod(应用实例)集合。Pod集合由本地系统的一个或多个容器构成。在Kubernetes集群中,kubelet作为本地代理,通过访问 Kubernetes的API服务器,监控PodSpecs的状态。Kubelet也负责注册节点到Kubernetes,发送事件和pod状态,汇报资源利用率。
Kubelet在Kubernetes集群中扮演着非常重要的角色,但它也可以在单机(standalone)模式下工作。这篇文章接下来将会重点介绍运行在单机模式下的Kubelet,比如运行单节点的Kubernetes集群,借助 cAdvisor 内建工具监控容器资源利用率。
首先我们要安 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
启动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,部署一个单节点Kubernetes集群。
下载 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
更多Kubernetes细节请翻阅 Kubernetes on CoreOS docs。
用cAdvisor监控容器
Kubelet内置打包了cAdvisor,它用于收集、合计、处理并导出给定系统的运行中容器的信息。cAdvisor 包含内置web接口,可通过4194端口访问。
[ cadvisor web 界面 ]
通过cAdvisor web UI,可很方便查看系统资源利用状况和处理列表。
[ 系统利用状况图 ]
cAdvisor也可用于监控特殊容器,例如在Kubernetes pod里运行的 kube-apiserver:
[ 用 cadvisor查看容器信息 ]
Kubelet在Kubernetes集群中扮演着非常重要的角色,但它也可以在单机(standalone)模式下工作。这篇文章接下来将会重点介绍运行在单机模式下的Kubelet,比如运行单节点的Kubernetes集群,借助 cAdvisor 内建工具监控容器资源利用率。
首先我们要安 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
启动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,部署一个单节点Kubernetes集群。
下载 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
更多Kubernetes细节请翻阅 Kubernetes on CoreOS docs。
用cAdvisor监控容器
Kubelet内置打包了cAdvisor,它用于收集、合计、处理并导出给定系统的运行中容器的信息。cAdvisor 包含内置web接口,可通过4194端口访问。
[ cadvisor web 界面 ]
通过cAdvisor web UI,可很方便查看系统资源利用状况和处理列表。
[ 系统利用状况图 ]
cAdvisor也可用于监控特殊容器,例如在Kubernetes pod里运行的 kube-apiserver:
[ 用 cadvisor查看容器信息 ]
相关文章推荐
- 在CoreOS上搭建一个WordPress程序操作实例
- CoreOS的Fleetctl笔记(一)
- XenServer上安装CoreOS
- Docker 使用方法总结之:管理工具 shipyard 的详细使用指南
- CoreOS环境下通过register镜像搭建私有仓库
- 通过已有Nginx镜像创建私有仓库
- OpenStack 定制CoreOS镜像
- OpenStack 定制CoreOS镜像
- OpenStack 定制CoreOS镜像
- CoreOS 安装 docker-compose
- coreos安装
- docker container 启动异常
- 阿里云ECS安装 CoreOS
- CoreOS 手动升级篇
- CoreOS 发行版本介绍
- CoreOS 手动更新
- PXE一键安装Coreos
- CoreOS Torcx
- 分布式存储服务:ETCD
- Kubernetes1.3新特性:rktnetes