网站:https://blog.51cto.com/u_3241766/2405624
环境说明:
主机名 | 操作系统版本 | ip | docker version | kubelet version | kubeadm version | kubectl version | flannel version | 备注 |
---|---|---|---|---|---|---|---|---|
master | Centos 7.6.1810 | 172.27.9.131 | Docker 18.09.6 | V1.14.2 | V1.14.2 | V1.14.2 | V0.11.0 | master主机 |
node01 | Centos 7.6.1810 | 172.27.9.135 | Docker 18.09.6 | V1.14.2 | V1.14.2 | V1.14.2 | V0.11.0 | node节点 |
node02 | Centos 7.6.1810 | 172.27.9.136 | Docker 18.09.6 | V1.14.2 | V1.14.2 | V1.14.2 | V0.11.0 | node节点 |
Centos7.6安装详见:Centos7.6操作系统安装及优化全纪录
Kubernetes这个名字源自希腊语,意思是“舵手”,也是“管理者”,“治理者”等词的源头。k8s是Kubernetes的简称(用数字『8』替代中间的8个字母『ubernete』)
**前言:**本文通过kudeadm方式在centos7.6上安装kubernetes v1.14.2集群(目前centos和kubernetes都为最新版),共分为六个部分:
一、Docker安装;
二、k8s安装准备工作;
三、Master节点安装;
四、Node节点安装;
五、Dashboard安装;
六、集群测试。
一、Docker安装
所有节点都需要安装docker
1. 安装依赖包
2. 设置Docker源
3. 安装Docker CE
3.1 docker安装版本查看
3.2 安装docker
指定安装的docker版本为18.09.6,由于该版本目前为最新版,故可以直接安装,不用指定版本:
4. 启动Docker
5. 命令补全
5.1 安装bash-completion
5.2 加载bash-completion
6. 镜像加速
由于Docker Hub的服务器在国外,下载镜像会比较慢,可以配置镜像加速器。主要的加速器有:Docker官方提供的中国registry mirror、阿里云加速器、DaoCloud 加速器,本文以阿里加速器配置为例。
6.1 登陆阿里云容器模块
登陆地址为:https://cr.console.aliyun.com ,未注册的可以先注册阿里云账户
6.2 配置镜像加速器
配置daemon.json文件
重启服务
加速器配置完成
7. 验证
通过查询docker版本和运行容器hello-world来验证docker是否安装成功。
二、k8s安装准备工作
安装Centos是已经禁用了防火墙和selinux并设置了阿里源。master和node节点都执行本部分操作。
1. 配置主机名
1.1 修改主机名
退出重新登陆即可显示新设置的主机名master
1.2 修改hosts文件
2. 验证mac地址uuid
保证各节点mac和uuid唯一
3. 禁用swap
3.1 临时禁用
3.2 永久禁用
若需要重启后也生效,在禁用swap后还需修改配置文件/etc/fstab,注释swap
4. 内核参数修改
4.1 临时修改
4.2 永久修改
5. 修改Cgroup Driver
5.1 修改daemon.json
修改daemon.json,新增‘“exec-opts”: [“native.cgroupdriver=systemd”’
5.2 重新加载docker
修改cgroupdriver是为了消除告警:
[WARNING IsDockerSystemdCheck]: detected “cgroupfs” as the Docker cgroup driver. The recommended driver is “systemd”. Please follow the guide at https://kubernetes.io/docs/setup/cri/
6. 设置kubernetes源
6.1 新增kubernetes源
- [] 中括号中的是repository id,唯一,用来标识不同仓库
- name 仓库名称,自定义
- baseurl 仓库地址
- enable 是否启用该仓库,默认为1表示启用
- gpgcheck 是否验证从该仓库获得程序包的合法性,1为验证
- repo_gpgcheck 是否验证元数据的合法性 元数据就是程序包列表,1为验证
- gpgkey=URL 数字签名的公钥文件所在位置,如果gpgcheck值为1,此处就需要指定gpgkey文件的位置,如果gpgcheck值为0就不需要此项了
6.2 更新缓存
三、Master节点安装
1. 版本查看
目前最新版是1.14.2,该版本支持的docker版本为1.13.1, 17.03, 17.06, 17.09, 18.06, 18.09。
2. 安装kubelet、kubeadm和kubectl
2.1 安装三个包
若不指定版本直接运行‘yum install -y kubelet kubeadm kubectl’则默认安装最新版即1.14.2,两种方式结果一致。
2.2 安装包说明
- kubelet 运行在集群所有节点上,用于启动Pod和容器等对象的工具
- kubeadm 用于初始化集群,启动集群的命令工具
- kubectl 用于和集群通信的命令行,通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件
2.3 启动kubelet
启动kubelet并设置开机启动
2.4 kubelet命令补全
3. 下载镜像
3.1 镜像下载的脚本
Kubernetes几乎所有的安装组件和Docker镜像都放在goolge自己的网站上,直接访问可能会有网络问题,这里的解决办法是从阿里云镜像仓库下载镜像,拉取到本地以后改回默认的镜像tag。
url为阿里云镜像仓库地址,version为安装的kubernetes版本。
3.2 下载镜像
运行脚本image.sh,下载指定版本的镜像,运行脚本前先赋权。
4. 初始化Master
4.1 初始化
apiserver-advertise-address指定master的interface,pod-network-cidr指定Pod网络的范围,这里使用flannel网络方案。
记录kubeadm join的输出,后面需要这个命令将各个节点加入集群中。
4.2 加载环境变量
本文所有操作都在root用户下执行,若为非root用户,则执行如下操作:
5. 安装pod网络
6. master节点配置
taint:污点的意思。如果一个节点被打上了污点,那么pod是不允许运行在这个节点上面的
6.1 删除master节点默认污点
默认情况下集群不会在master上调度pod,如果偏想在master上调度Pod,可以执行如下操作:
查看污点:
删除默认污点:
6.2 污点机制
语法:
打污点
key为key1,value为value1(value可以为空),effect为NoSchedule表示一定不能被调度
删除污点:
删除指定key所有的effect,‘-’表示移除所有以key1为键的污点
四、Node节点安装
1. 安装kubelet、kubeadm和kubectl
同master节点
2. 下载镜像
同master节点
3. 加入集群
以下操作master上执行
3.1 查看令牌
发现之前初始化时的令牌已过期
3.2 生成新的令牌
3.3 生成新的加密串
3.4 node节点加入集群
在node节点上分别执行如下操作:
五、Dashboard安装
1. 下载yaml
如果连接超时,可以多试几次
2. 配置yaml
2.1 修改镜像地址
由于默认的镜像仓库网络访问不通,故改成阿里镜像
2.2 外网访问
配置NodePort,外部通过https://NodeIp:NodePort 访问Dashboard,此时端口为30001
2.3 新增管理员帐号
创建超级管理员的账号用于登录Dashboard
3. 部署访问
3.1 部署Dashboard
3.2 状态查看
3.3 令牌查看
令牌为:
3.4 访问
请使用火狐浏览器访问
通过令牌方式登录
Dashboard提供了可以实现集群管理、工作负载、服务发现和负载均衡、存储、字典配置、日志视图等功能。
六、集群测试
1. 部署应用
1.1 命令方式
通过命令行方式部署apache服务
1.2 配置文件方式
通过配置文件方式部署nginx服务
2. 状态查看
2.1 查看节点状态
2.2 查看pod状态
2.3 查看副本数
可以看到nginx和httpd的3个副本pod均匀分布在3个节点上
2.4 查看deployment详细信息
2.5 查看集群基本组件状态
至此完成Centos7.6下k8s(v1.14.2)集群部署。
k8s主备高可用部署详见:Centos7.6部署k8s v1.16.4高可用集群(主备模式)
k8s集群高可用部署详见:lvs+keepalived部署k8s v1.16.4高可用集群
本文所有脚本和配置文件已上传github:https://github.com/loong576/Centos7.6-install-k8s-v1.14.2-cluster.git
本文参考:
1.https://docs.docker.com/install/linux/docker-ce/centos;
2.https://kubernetes.io/docs/setup/independent/install-kubeadm;
3.https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm;
4.https://github.com/coreos/flannel;
5.https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.14.md#external-dependencies;
6.https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/;