CoreOS Linux引入了Kubernetes kubelet

作者:Kelsey Hightower

2015年8月14日

这周我们在 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=
Restart=on-failure
RestartSec= [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,部署一个单节点 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 界面.

通过 cAdvisor web UI ,可很方便查看系统资源利用状况和处理列表。

System utilization information.

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

cadvisor查看容器信息.

想了解更多 cAdvisor 信息请翻阅 upstream docs.

CoreOS 和 Kubernetes的更多信息

CoreOS Linux 镜像中集成 kubelet 表明我们对(支持) Kubernetes 的承诺和要为我们用户带来最好的开源容器技术的(决心)。原生支持了 Kubernetes kubelet ,我们希望提升 Kubernetes 的部署效率,并提供健壮的接口以管理和监控 CoreOS 系统上的容器。

如果你对 Kubernetes 有兴趣,请务必出席在你的城市即将开展的Kubernetes的一些培训。更多安排会提上日程并回顾记录。如果你想要私人的在线培训,请联系我们

CoreOS Linux引入了Kubernetes kubelet的更多相关文章

  1. CoreOS Linux available in China

    CoreOS Linux 竭诚服务中国用户 今天,我们宣布一个令人振奋的消息 - CoreOS Linux 开源版本正式向中国地区提供服务!国内的用户们现在可以使用安全.自动的 CoreOS Linu ...

  2. kubernetes kubelet组件中cgroup的层层"戒备"

    cgroup是linux内核中用于实现资源使用限制和统计的模块,docker的风靡一时少不了cgroup等特性的支持.kubernetes作为容器编排引擎,除了借助docker进行容器进程的资源管理外 ...

  3. Kubernetes - Kubelet TLS Bootstrapping

    一.简单说明 写这个的初衷是自己搜索TLS Bootstrapping的时候没有搜到自己想要的东西,因为TLS Bootstrapping经过很多版本之后也发生了一些变化,所以网上很多也是老的内容了. ...

  4. linux(centos8):安装kubernetes worker节点并加入到kubernetes集群(kubernetes 1.18.3)

    一,安装kubernetes前的准备工作      安装前的准备工作(master\worker都要进行)      参见: https://www.cnblogs.com/architectfore ...

  5. Kubernetes Kubelet安全认证连接Apiserver

    Kubelet使用安全认证连接Apiserver,可以用Token或证书连接.配置步骤如下. 1,生成Token命令 head -c /dev/urandom | od -An -t x | tr - ...

  6. linux运维、架构之路-Kubernetes离线集群部署-无坑

    一.部署环境介绍 1.服务器规划 系统 IP地址 主机名 CPU 内存 CentOS  7.5 192.168.56.11 k8s-node1 2C 2G CentOS  7.5 192.168.56 ...

  7. linux运维、架构之路-Kubernetes集群部署TLS双向认证

    一.kubernetes的认证授权       Kubernetes集群的所有操作基本上都是通过kube-apiserver这个组件进行的,它提供HTTP RESTful形式的API供集群内外客户端调 ...

  8. linux运维、架构之路-Kubernetes离线、二进制部署集群

    一.Kubernetes对应Docker的版本支持列表 Kubernetes 1.9 <--Docker 1.11.2 to 1.13.1 and 17.03.x Kubernetes 1.8 ...

  9. CoreOS, Kubernetes, etcd

    CoreOS CoreOS Container Linux is the leading container operating system, designed to be managed and ...

随机推荐

  1. ip相关

    查看ip ifconfig -a 查看端口占用 ps -aux | grep tomcat

  2. http常见状态码解析

    自定义 Ajax原生编写ajax:function(opt){ var xmlhttp; //创建对象 if (window.XMLHttpRequest){// code for IE7+, Fir ...

  3. RabbitMQ 入门 Helloworld

    1.介绍 RabbitMQ 是信息传输的中间者.本质上,他从生产者(producers)接收消息,转发这些消息给消费者(consumers).换句话说,他能够按根据你指定的规则进行消息转发.缓冲.和持 ...

  4. Bootstrap_媒体对象

    一.基本媒体对象 媒体对象一般是成组出现,而一组媒体对象常常包括以下几个部分: ☑ 媒体对像的容器:常使用“media”类名表示,用来容纳媒体对象的所有内容 ☑ 媒体对像的对象:常使用“media-o ...

  5. Android SDK Tools 更新

    C:\WINDOWS\system32\drivers\etc\hosts 文件用记事本打开后 添加下面的 74.125.237.1 dl-ssl.google.com

  6. UE4 使用UGM制作血条

    声明:本文是自己做的项目,可能不是最好的方法,或有错误使用方式.各位不喜勿喷! HP进度 HP背景 将上面的资源拖到UE4中(使用UE4自带的颜色也可实现效果,具体参考官方教程 https://doc ...

  7. 关于html转pdf

    本篇作为一个备忘,记录一下html转pdf中遇到的问题. 没有具体做这个东西的时候不知道,网络上能将html转换成pdf的资源并不太多,使用上有很多都存在一些问题.能完美将一个站点中的页面(这里说一个 ...

  8. Freemarker中日期时间格式出错

    今天遇到一个奇怪的问题.同事访问我电脑发布的程序页面,freemarker日期格式报错.而其他电脑访问则没有问题. 先贴出错误信息. FreeMarker template error The str ...

  9. JAVA 1.3 (原生数据类型 Primitive Data Type)续

    1. 原生数据类型一共有4类8种 >> 整数类型 int表示一个int代表32位 2^32(-2147483648 - 2147483647) >> 字符类型 byte 表示一 ...

  10. [地图SkyLine二次开发]框架(4)

    继续上一节... 1.Extjs5.0版Menu. -将Extjs包引入MenuPage.html页. 2.前段用Extjs的MVC框架 -在根目录下创建app文件夹,文件夹下分别创建controll ...