kubernetes集群——部署kubelet
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就部署完成了,本文以外的更多应用场景,请读者自行尝试。
- China Azure中部署Kubernetes(K8S)集群
- Kubernetes集群中部署私有库harbor
- k8s集群之kubernetes-dashboard和kube-dns组件部署安装
- kubernetes集群部署
- <转>kubernetes集群中部署kube-ui
- 在阿里云上部署生产级别Kubernetes集群
- Centos7 yum安装 Kubernetes 集群详细步骤(安装部署)
- Kubernetes1.91(K8s)安装部署过程(三)--创建高可用etcd集群
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之flanneld网络介绍及部署(三)
- Kubernetes学习2--集群部署与搭建
- Kubernetes 集群的两种部署过程(daemon部署和容器化部署)以及glusterfs的应用!
- Kubernetes部署大数据组件系列一:一键部署Zookeeper集群
- kuberspay部署高可用kubernetes集群
- Centos7安装部署Kubernetes(K8s)集群
- China Azure中部署Kubernetes(K8S)集群
- kubernetes 1.3 的安装和集群环境部署
- 在CentOS7上部署Kubernetes集群
- kubernetes1.5.2集群部署过程--安全模式
- 基于kubernetes集群部署DashBoard
- 通过Rancher部署并扩容Kubernetes集群基础篇二