kubernetes集群——部署kubelet

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/guan0005/article/details/81518312

kubernetes集群——部署kubelet

环境:
CentOS-7-1611-x86_64
docker:18.03.1-ce
kubernetes版本:1.11.2

一、下载kubernetes
根据操作系统选择正确的kubernetes二进制文件下载,CentOS-7.3.1611-x86_64需要下载kubernetes-server-linux-amd64.tar.gz文件,下载地址:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.11.md#downloads-for-v1112。kubernetes有client、server、node二进制文件包,server包中就包含了kubernetes的所有文件(包括client和node包中的文件),所以只需下载server包即可。

二、kubelet安装及配置
1、解压kubernetes-server-linux-amd64.tar.gz文件。本文将压缩包里的kubernetes目录解压到了/usr/local/lib目录下,并重命名为kubernetes-1.11.2,本文将此目录(/usr/local/lib/kubernetes-1.11.2)作为kubernetes的工作目录。kubelet就在/usr/local/lib/kubernetes-1.11.2/server/bin目录下。
这里写图片描述

2、创建并编辑/usr/lib/systemd/system/kubelet.service文件,文件内容如下:

[Unit]
Description=Kubelet Server
Documentation=https://kubernetes.io
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/local/lib/kubernetes-1.11.2/server/bin/kubelet \
          --logtostderr=false \
          --log-dir=/usr/local/lib/kubernetes-1.11.2/logs/kubelet \
          --fail-swap-on=false \
          --pod-manifest-path=/usr/local/lib/kubernetes-1.11.2/config/kubelet/manifest \
          --pod-infra-container-image=192.168.31.11:5000/pod-infrastructure:latest-20180809 \
          --hostname-override=192.168.31.11
Restart=on-failure

[Install]
WantedBy=multi-user.target

kubelet启动参数说明:(1)“logtostderr”决定kubelet的日志信息输出到哪里,默认值为true,表示输出到系统的标准输出,即“/var/log/messages”文件中;若值为false,则表示将日志信息输出到日志文件中,日志文件在参数“log-dir”设置的目录中;若“logtostderr”设置为false,而又没有设置“log-dir”参数,则不知道日志信息输出到了哪里。(2)kubelet是不允许使用SWAP的,要启动kubelet,需要将SWAP关闭。如果不想关闭SWAP,又想正常启动kubelet,需要将“fail-swap-on”参数设置为false。(3)参数“pod-manifest-path”设置了pod描述文件所在的目录,kubelet会定时轮询这个目录下的pod描述文件,根据文件调整(增删改)docker中的容器。(4)参数“pod-infra-container-image”指定了基础镜像,创建每个pod时,都必需用基础镜像启动一个容器(Pause容器)。国内可用的基础镜像有:registry.access.redhat.com/rhel7/pod-infrastructure:latest,本文将此镜像上传到了docker私有镜像仓库(docker私有镜像仓库的搭建及使用,请参考本博客另一篇文章《centos7搭建及使用DOCKER私有仓库》)。(4)“hostname-override”设置了此kubelet节点名称,如果为空,则使用主机名作为此kubelet节点名。(5)更多kubelet参数说明请参阅官网:https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/

三、kubelet的安装验证
1、创建并编辑pod描述文件“/usr/local/lib/kubernetes-1.11.2/config/kubelet/manifest/nginx-pod.yaml”,内容如下:

apiVersion: v1
kind: Pod
metadata:
  name: nginx-server
spec:
  containers:
  - name: nginx
    image: 192.168.31.11:5000/nginx:latest-20180809
    ports:
    - containerPort: 80
      hostPort: 80

说明:pod描述文件支持yaml和json两种格式,网上的教程大部分是json格式,本文使用yaml格式。上述是一个极简的pod描述文件,这个文件启动的pod只有一个nginx容器(Pause容器是必需启动的,无需在文件描述),这个容器开放了80端口,并将其映射到宿主机的80端口。pod使用的镜像是从网上下载再上传到私有镜像仓库的docker官网的nginx镜像。更多yaml文件格式的说明,请参阅:https://www.cnblogs.com/FRESHMANS/p/8444214.html

2、启动kubelet,观察kubelet状态及docker的容器状态。

systemctl start kubelet.service
systemctl status kubelet.service

可以看到kubelet运行正常,如下图:
这里写图片描述
查看docker容器状态,可以看到dock启动了两个容器,一个就是每个pod都需要的基础容器,另外一个就是我们在pod描述文件中配置的nginx容器,查看服务器端口,可以看到80端口已经处于侦听状态。如下图:
这里写图片描述
而一旦我们删除pod描述文件“/usr/local/lib/kubernetes-1.11.2/config/kubelet/manifest/nginx-pod.yaml”,docker中的这两个容器就会消失。
至此,一个最简单的kubelet就部署完成了,本文以外的更多应用场景,请读者自行尝试。

展开阅读全文

没有更多推荐了,返回首页