K8S部署

三台主机:

192.168.88.142(master)

192.168.88.137(node1)

192.168.88.138(node2)

 

1.在master上修改配置文件/etc/hosts

vim /etc/hosts

scp /etc/hosts root@k8snode1:/etc/

scp /etc/hosts root@k8snode2:/etc/             #把修改后的配置文件远程拷贝到其他两台主机

都修改配置文件后,相互ping一下,看是否能够ping 通

ping k8smaster

ping k8snode1

ping k8snode2

 

hostname k8smaster                #修改主机名(192.168.88.142)

bash                                             #使其生效

 

hostname k8node1                   #修改主机名(192.168.88.137)

bash                                             #使其生效

        

hostname k8snode2                          #修改主机名(192.168.88.138)

bash                                             #使其生效

2.安装docker

yum install docker –y                #三台主机安装docker

systemctl enable docker          #三台主机开机自启

 

3.安装k8s

由于国内无法直接安装k8s相关组件(需要翻墙),我们使用国内阿里云镜像站下载k8s相关组件。

1.https://developer.aliyun.com/mirror/                 #登录阿里云镜像站,找到k8s选项

 2.添加k8s的yum源(将阿里镜像站给的参考直接拷贝到yum源中)

  Vim /etc/yum.repos.d/kubernetes.repo

        

将配置文件远程拷贝到其他两台主机 

scp  /etc/yum.repos.d/kubernetes.repo root@k8snode1: /etc/yum.repos.d/

scp  /etc/yum.repos.d/kubernetes.repo root@k8snode2: /etc/yum.repos.d/

 

3.由于最新版本的k8s国内镜像站没有相应资源,所以我们下载1.15.3版本

yum install -y kubelet-1.15.3 kubeadm-1.15.3 kubectl-1.15.3 --disableexcludes=kubernetes  #三台主机都安装

 

4.升级linux内核

下面操作要在三台主机上都操作

http://elrepo.org/tiki/tiki-index.php             #访问这个网站

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org                                #导入key

yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm          #安装

 

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available –showduplicates                #查看内核版本

 

yum --enablerepo="elrepo-kernel" install kernel-ml –y                          #安装内核,安装成功后,系统默认将更新的内核放在引导文件的第一位

 

#修改内核引导文件

vim /boot/grub2/grub.cfg              #在这个文件中我们寻找内和引导参数,发现此时最新的内核版本就在第一位

grub2-set-default 0                          #执行此命令,确定一下引导内核从第零位开始

grub2-mkconfig -o /boot/grub2/grub.cfg             #重新生成以下文件

 

reboot     #重启电脑

 

重启电脑后查看现在的内核地址是否是最新版本

[root@k8smaster ~]# uname –r

5.7.6-1.el7.elrepo.x86_64                       #升级内核成功!

 

5.闭swap分区

注:不能用克隆主机,因为要保持三台主机的Mac地址都不同。

cat /sys/class/net/ens33/address          #查看Mac地址

cat /sys/class/dmi/id/product_uuid               #查看UUID(MAC地址不同,UUID也不相同)

free –m                     #查看swap分区,我们需要永久关闭掉swap分区

swapoff –a                       #关闭swap分区

cp /etc/fstab /etc/fstab_bak                  #备份文件

vim /etc/fstab                                   #修改这个文件

#注释掉swap行,保存退出

 

vim /etc/sysctl.conf

sysctl –p                             #生效

#修改内核参数

 

Free –m            #查看关闭

systemctl stop firewalld && systemctl disable firewalld      #关闭防火墙

systemctl start docker                     #重启docker

docker info                                #查看相关信息

我们需要开启最下面两个参数(目前是关闭的)

cd /proc/sys/net/bridge/                         #进到这个目录下

[root@k8snode1 bridge]# cat bridge-nf-call-iptables

  1. #代表关闭,需要开启

 

vim /etc/sysctl.conf                         #仍然是修改这个文件

sysctl –p           #生效

scp /etc/sysctl.conf root@k8snode1:/etc/

scp /etc/sysctl.conf root@k8snode2:/etc/                   

 

systemctl restart docker                         

docker info                       #重启docker发现上面两个参数没有了(OK!)

systemctl enable docker        

 

vim /etc/selinux/config                            #关闭是SELINUX

setenforce 0

 

 

 

6.下载相关组件

systemctl enable kubelet.service

systemctl start kubelet.service               #三台主机都执行

 

kubeadm config images pull           #k8s在启动过程中需要有大量的组件,这样拉去的时候是直接连接的谷歌服务器,会超时。

kubeadm version                      #看一下版本,去选择此版本组建的版本号

kubeadm config images list --kubernetes-version=v1.15.3

我们在国内无法连接到谷歌服务器,但是可以从国内镜像中拉取这些k8s组件

docker pull bingju328/kube-apiserverv1.15.3

docker pull mirrorgooglecontainers/kube-controller-manager:v1.15.3

docker pull mirrorgooglecontainers/kube-scheduler:v1.15.3

docker pull mirrorgooglecontainers/kube-proxy:v1.15.3

docker pull mirrorgooglecontainers/pause:3.1

docker pull mirrorgooglecontainers/etcd:3.3.10

docker pull coredns/coredns:1.3.1

 

#三台主机全部拉取以上镜像

注:在拉去之前,会有速度慢的问题,可以实现配置一下docker加速器(此处省略)

 

docker images                  #查看一下拉去下来的镜像

 

拉取玩镜像后我们需要把镜像的名字改成k8s识别的名字,即上图的名字

一共拉取了七个组件,其中有五个是名字带有mirrorgooglecontainers,先替换这五个。

通过一个脚本,批量替换

docker images|grep mirrorgooglecontainers | awk '{print "docker tag ",$1":"$2,$1":"$2}' |sed -e 's#docker.io/mirrorgooglecontainers#k8s.gcr.io#2' |sh –x                   #三台主机都执行

docker tag docker.io/coredns/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1

docker tag docker.io/bingju328/kube-apiserverv1.15.3 k8s.gcr.io/kube-apiserver:v1.15.3               #剩下两个替换,三台主机都执行

docker images |grep k8s.gcr.io      #过滤查看一下

docker images |grep mirrorgooglecontainers |awk '{print "docker rmi ",$1":"$2}' |sh -x

docker images |grep docker.io |awk '{print "docker rmi ",$1":"$2}' |sh –x                 #删除剩下的不需要的镜像

 

 

7.配置flannel网络

docker pull quay.io/coreos/flannel:v0.11.0-arm64               #拉取flannel网络,三台主机

docker images                  #查看仓库是否拉去下来

mkdir -p /etc/cni/net.d                    #创建目录给flannel做配置文件

vim /etc/cni/net.d/10-flannel.conf

scp  /etc/cni/net.d/10-flannel.conf root@k8snode1:/etc/cni/net.d/10-flannel.conf

scp  /etc/cni/net.d/10-flannel.conf root@k8snode2:/etc/cni/net.d/10-flannel.conf             #远程拷贝

mkdir /usr/share/oci-umount/oci-umount.d/ -p                   #三台主机

mkdir /run/flannel                                     #三台主机

写flannel网段配置文件

scp /run/flannel/subnet.env root@k8snode1:/run/flannel/subnet.env

scp /run/flannel/subnet.env root@k8snode2:/run/flannel/subnet.env

 

systemctl daemon-reload

systemctl restart kubelet.service

systemctl restart docker                                                     #三台

 

poweroff                  #关机,照快照

 

8.加入集群

Kubeadm init –apiserver-advertise-address 192.168.88.142 –pod-network-cidr=10.244.0.0/16              #初始化进程,此操作只在master上操作

提示如果作为管理者,需要运行上述命令,在master运行上述命令。

 

 

访问上图给出的地址,找到flannel网络点击

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-legacy.yml

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel-rbac.yml            #master执行这两个命令

 

其他两台主机要加入k8s集群,运行上图他给出的命令,即可加入集群

计入集群后提示到master上运行kubectl get nodes命令。

master上运行kubectl get nodes

创建docker目录

Mkdir –p /etc/docker

上述图片是初始化k8s集群时给的网站。

vim /etc/docker/daemon.json

#之前添加了镜像加速器

Scp /etc/docker/daemon.json root@k8snode1: /etc/docker/daemon.json

Scp /etc/docker/daemon.json root@k8snode2: /etc/docker/daemon.json

 

9.设置tab

K8s本身无法tab

Locate bash_completion

 

Yum install bash-completion –y              #需要装这个软件,否则无法使用tab,三台主机都安装

复制下来这个文件名,重新读取一下这个文件

Source /usr/share/bash-completion/bash_completion                #重新读取一下这个文件

Source  <(kubectl completion bash)                     #以上操作在三台主机上都执行

现在就可以使用tab了!

 

显示所有节点健康,K8S安装完毕!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐