K8S集群部署

一、前期准备

查看可安装的docker-ce版本

 yum list docker-ce --showduplicates | sort -r可以查看可安装的docker-ce版本
    yum install -y docker-ce-17.03.2.ce-1.el7.centos

镜像加速

镜像加速修改/etc/docker/daemon.json,添加
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

docker版本是docker-ce,集群初始化相关命令

kubeadm config print init-defaults 查看默认初始化的脚本文件
kubeadm config images list  显示所有主节点组件相关镜像
kubeadm config images pull 从远程k8s.gcr.io官方镜像下载主节点组件所有镜像

生成永久的加入集群的token

kubeadm token create --ttl 0

获取ca证书sha256编码hash值

openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

加入集群命令

kubeadm join 192.168.137.128:6443 --token  xxxxxxxxx --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

环境准备

部署kubernetes集群至少需要三台主机,一台主机作为master主节点,另外两台主机分别为计算节点node01、node02。虚拟机系统为CentOS-7操作系统,主节点安装docker、kubelet、kubectl、kubeamd;计算节点安装docker、kubelet、kubeamd。

需要特别注意的是:docker版本必须与kubernetes的版本相匹配,如果不匹配就会出现依赖的问提

这里采用docker-1.13和kubernetes-1.10版本

设置时间同步

若节点可以直接访问互联网,直接启动cheronyd系统服务,并设定其岁系统引导而启动,不过,建议用户配置使用本地时间服务器,在节点数量众多时尤其要如此。修改节点的/etc/crhony.conf配置文件,并将时间服务器指向相应的主机即可,配置格式如下:
server CHRONY-SERVER-NAME-OR-IP iburst

systemctl start chronyd.service
systemctl enable chronyd.service

设置主机名解析

配置文件路径/etc/hosts,格式如下:
192.111.0.1 master.cnm.com master
192.111.0.2 node.cnm.com node01
192.111.0.3 node.cnm.com node02

关闭防火墙

关闭系统自带的防火墙systemctl stop firewalld
                 systemctl disable firewalld

关闭禁用selinux

部署集群时,kubeadm默认会预先检查当前主机是否禁用了Swap设备,并在未禁用时强制终止部署过程。因此,在主机内存资源充裕的条件下,需要禁用所有的Swap设备,否则,就需要在后面的kubeadm init及kubeadm join命令执行时额外使用相关的选项忽略检查错误
关闭Swap设备,需要分两步完成。首先是关闭当前已经启用的所有Swap设备:

swapoff -a

而后在/etc/fstab配置文件,注释用于挂载Swap设备的所有行

启用ipvs内核模块

在这里插入图片描述

二、安装阶段(在各主机上完成)

在这里插入图片描述
在这里插入图片描述

HTTPS_PROXY=http://www.ik8s.io:10070/10080
NO_PROXY=127.0.0.0/8,根据本主机的网络网段来设置,这里是192.168.0.0/16

在这里插入图片描述

进入配置文件vim /etc/sysctl.conf
配置net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
执行命令sysctl -p /etc/sysctl.conf
或者
新建一个目录比如vim /etc/sysctl.d/k8s.conf,在k8s.conf配置文件中添加
net.bridge.bridge-nf-call-iptables=1
 net.bridge.bridge-nf-call-ip6tables=1
 保存退出,再执行sysctl -p /etc/sysctl.d/k8s.conf

在这里插入图片描述
上面截图是第一种方式
第二种方式是将配置文件内容写进yaml文件,例如kubeadm-config.yaml,而后执行相应的命令:
在这里插入图片描述

三、初始化集群

在这里插入图片描述
如果初始化集群失败报如下错误:
在这里插入图片描述
是由于国内拉去镜像的问题,从k8s.gcr.io无法直接拉取镜像。因此为了解决此问题,可以先docker pull 下来,然后在进行集群初始化。那么这个问题就解决了
看到如下信息表示集群master主节点初始化成功
在这里插入图片描述

接下来要做几件事情:
第一:把上面红框里面的三条命令在主节点执行一遍
第二:记住下面kubeadm join…这段,因为这是node节点加入到该集群的token(令牌)。

虽然集群初始化成功,但是还没有安装flannel第三方网络插件,因此你查看节点信息会有如下显示:表示主节点还没有准备就绪,是因为网络插件没有安装
在这里插入图片描述
那么接下来我们就在主节点安装网络插件flannel

执行命令:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

在这里插入图片描述
如图所示表示flannel网络插件安装成功。再kubectl get nodes命令查看,节点状态变为ready
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cdbdqn001/article/details/88424275