k8s的搭建(详细)

实验环境:

linux系统centos
docker版本18.03.0
master192.168.166.156
node1192.168.166.160
node2192.168.166.161

k8s是Google开源的容器编排工具,提供自动化部署、大规模可伸缩、应用容器化管理等功能。

修改三台主机的主机名并编写域名解析文件
#在三个节点上分别做主机名的修改
master节点:hostnamectl set-hostname master;bash
node1节点:hostnamectl set-hostname node1;bash
node2节点:hostnamectl set-hostname node2;bash

修改master的主机名(例)

#编写域名解析文件
vim /etc/hosts
192.168.166.156 master
192.168.166.160 node1
192.168.166.161 node2
#使用scp工具将域名解析文件同步到另外两台主机
scp /etc/hosts  root@node1:/etc
scp /etc/hosts  root@node2:/etc

域名解析文件

关闭防火墙和selinux

关闭我们的防火墙

#三台主机都做
systemctl stop firewalld
systemctl disable firewalld

这里我展示master节点上的
关闭master上的防火墙
关闭selinux

##三台主机都做
#临时关闭selinux
setenforce 0
getenforce #查看selinux的状态
##要永久关闭selinux,要修改配置文件,下次重启后就自动关闭
vim /etc/selinux/conf
SELINUX=disabled

masterj节点上的selinux

关闭系统中的swap分区
#三台主机都做
#临时关闭系统中的swap分区
swapoff  -a  #取消所有的swap分区的挂载
#永久关闭swap分区
vim /etc/fstab
(将其中有关swap分区挂载的信息注释掉)

在这里插入图片描述

在这里插入图片描述

修改内核参数
#三台主机都做
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
#然后使用sysctl -p 刷新到内存
在一台主机做好后同步到另外两台主机
####***这里一定要注意只有主机上有docker并且docker处于开启状态才能刷新不然会报错***

在这里插入图片描述

时间同步
#三台主机都做
#安装时间服务
yum install -y ntpdate
#向阿里云的时间服务器同步(也可以使用其他的时间服务器)
ntpdate ntp1.aliyun.com
保证时间的误差很小就可以了

修改daemon文件
#三台主机都做
#修改我们的/etc/docker/daemon.json文件
此文件中原本就有一个镜像加速配置,在其后面添加
vim /etc/docker/daemon.json
"exec-opts": ["native.cgroupdriver=systemd"]
添加后
systemctl daemon-reload
systemctl restart docker

修改daemon文件

编辑k8s的yum源
#三台主机都做
vim /etc/yum.repos.d/k8s.repo
[k8s]
name=k8s
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg

yum源文件

安装k8s并设置开机自启
#三台主机都做
yum install -y kubeadm-1.16.0 kubectl-1.16.0 kubelet-1.16.0 
#注意这里的k8s的版本要与docker版本相匹配,不然可能会出现警告或者报错
然后将k8s设置为开机自启(此时不能开启)
systemctl enable kubelet
#kubeadm 为初始化、管理集群的工具 kubelet 为核心 kubectl 提供操作的命令


集群的初始化
#只在master节点上做
kubeadm init --apiserver-advertise-address 192.168.16.156 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.16.0 --pod-network-cidr 10.244.0.0/16
# --apiserver-advertise-address 用于指定我们的集群中master节点所在主机的IP地址
#--image-repository  指定镜像地址为阿里云 ,k8s的创建需要使用到很多的镜像,此选项就是指定我们的镜像从哪里获取,默认使用谷歌上获取,
#--kubernetes-version 我们的k8s的版本是多少
#--pod-network-cidr pod中使用的网段是多少,因为我们默认使用的就是Flannet网络,而Flannet网络的网段就是这样(也可以使用其他的网络)

在这里插入图片描述

这样就代表正在初始化集群,并且在拉取镜像,拉取完成后会有7个镜像
七个镜像如下:
在这里插入图片描述
最后能够看到如下内容说明成功了
在这里插入图片描述
将框中的内容保存下来,后面要用
设置环境变量
在这里插入图片描述

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

网络插件的安装
#master上做
上一步初始化完成后,我们就可以查看集群的状态了,此时集群的状态为notready,是因为我们的网络插件没有安装,在k8s中我们的网络功能是使用插件完成的,k8s本身并不提供网络功能,需要自行安装
kubectl apply  -f kube-flannel-v0.14.0.yml
##我这里是将网络插件文件下载到本地了

查看集群的状态
在这里插入图片描述
网络插件下载完成,并且下载时会自动的拉取有关插件的镜像
在这里插入图片描述
网络插件的镜像
在这里插入图片描述

集群间必须要有网络,因为要实现集群中主机的通信

其他节点的加入
#在除master以外的节点上执行
kubeadm join 192.168.166.156:6443 --token gaw8hb.z2w8nuvyi7s6c1ft \
    --discovery-token-ca-cert-hash sha256:62cfc23be0ba6aac877382d629e8b3ec15204736b71b68e6c0ca7df0459e9c1b

这种情况下就好了,节点状态改变随系统配置而定
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值