基于kubernetes构建CI/CD的流程(4)-Kubernetes集群的搭建

什么是Kubernetes?这里就不做解释了,大家可以去百度看一下,咱们这里主要来讲解怎么在我们的虚拟机里面搭建Kubernetes集群。

1. 基础安装

首先准备三台虚拟机,配置好对应的IP地址。

基于kubernetes构建CI/CD的流程(4)-Kubernetes集群的搭建_第1张图片

基于kubernetes构建CI/CD的流程(4)-Kubernetes集群的搭建_第2张图片

基于kubernetes构建CI/CD的流程(4)-Kubernetes集群的搭建_第3张图片

1.1 安装JDK

上面三个就是我配置好的虚拟机,首先我们先安装java环境

yum install -y java

使用java -version看看我们的环境是不是都安装好了。

1.2 安装Docker

接下来因为Kubernetes依赖Docker,这里我们安装Docker环境,如果我们直接使用yum源来安装的话,可能到了安装Kubernetes的时候会版本过高,所以这里我们选择18.06.3.ce-3.el7这个版本。

第一步先安装需要的工具

yum install -y yum-utils   device-mapper-persistent-data   lvm2

第二步设置源

yum-config-manager   --add-repo    https://download.docker.com/linux/centos/docker-ce.repo

第三步查看对应的版本

yum list docker-ce.x86_64 --showduplicates | sort -r

基于kubernetes构建CI/CD的流程(4)-Kubernetes集群的搭建_第4张图片

这里能看到好多,找到我们需要的版本就好了

第四步安装Docker

yum makecache fast && yum -y install docker-ce-18.06.3.ce-3.el7

第五步设置开机启动

systemctl daemon-reload && systemctl restart docker
systemctl enable docker.service

这样我们的Docker环境就安装好了,看看我们需要的Docker版本是不是正确的。

1.3 Master 和 Node都需要的一些基础组件

直接按照步骤安装就好了

yum install vim wget ntpdate -y

因为 kubernetes 会创建防火墙规则,导致防火墙规则重复。所以这里我们要将防火墙关闭

systemctl stop firewalld & systemctl disable firewalld

我们关闭 Swap 分区。 Swap 是 Linux 的交换分区,在系统资源不足时,Swap 分区会启用。这操作会拖慢我们的应用性能。

临时关闭:swapoff -a。 永久关闭:在/etc/fstab中找到/dev/mapper/centos-swap swap ...  ,把这个注释掉就好了

继续关闭 Selinux

暂时关闭:setenforce 0。 永久关闭:在/etc/sysconfig/selinux中把SELINUX设置成disabled

使用 ntpdate 来统一我们的系统时间和时区,服务器时间与阿里云服务器对齐。

# 统一时区,为上海时区
ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
bash -c "echo 'Asia/Shanghai' > /etc/timezone"

# 统一使用阿里服务器进行时间更新
ntpdate ntp1.aliyun.com

1.4 安装Kubernetes的组件

首先先将安装源更换为为国内的阿里云源

cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

接着直接使用 yum 命令安装 kubelet、 kubeadmkubectl 即可,安装完毕后启用 kubelet 即可。

yum install -y kubelet kubeadm kubectl
# 启动kubelet
systemctl enable kubelet && systemctl start kubelet

kubelet 是 Kubernetes 中的核心组件。它会运行在集群的所有节点上,并负责创建启动服务容器 kubectl 则是Kubernetes的命令行工具。可以用来管理,删除,创建资源 kubeadm  则是用来初始化集群,子节点加入的工具。

2. Master节点的安装

首先,我们使用 hostnamectl 来修改主机名称为 master 。hostnamectl 是 Centos7 出的新命令,可以用来修改主机名称:

hostnamectl set-hostname  master

使用vim /etc/hosts,把我们的地址映射到对应master名称上。

配置 Kubernetes 初始化文件:

接着我们使用 kubeadm config print init-defaults 输出一份默认初始化配置文件,使用 > 操作符即可导出为一份文件,方便我们进行修改。

kubeadm config print init-defaults > init-kubeadm.conf
vim init-kubeadm.conf

## 替换调下面的内容
# imageRepository: k8s.gcr.io 更换k8s镜像仓库
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
# localAPIEndpointc,advertiseAddress为master-ip ,port默认不修改
localAPIEndpoint:
  advertiseAddress: 192.168.56.101  # 此处为master的IP
  bindPort: 6443
# 配置子网络
networking:
  dnsDomain: cluster.local
  serviceSubnet: 10.96.0.0/12
  podSubnet: 10.244.0.0/16	# 添加这个

在修改完配置文件后,我们需要使用 kubeadm 拉取我们的默认组件镜像。

kubeadm config images pull --config init-kubeadm.conf

3.初始化Kubernetes

在镜像拉取后,我们就可以使用刚才编辑好的配置文件去初始化 Kubernetes 集群了。这里直接使用 kubeadm init 命令去初始化即可。

kubeadm init --config init-kubeadm.conf

在静等运行一会后,终端会给出以下提示: 

基于kubernetes构建CI/CD的流程(4)-Kubernetes集群的搭建_第5张图片

其中,红框命令为在 Master 节点需要执行的初始化命令,其作用为将默认的 Kubernetes 认证文件拷贝进 .kube 文件夹内,才能默认使用该配置文件。

蓝框为需要在 node 节点执行的命令。作用是可以快速将 Node 节点加入到 Master 集群内。

4.安装 Flannel

它的主要作用是通过创建一个虚拟网络,让不同节点下的服务有着全局唯一的IP地址,且服务之前可以互相访问和连接。

那么 Flannel 作为 Kubernetes 的一个组件,则使用 Kubernetes 部署服务的方式进行安装。首先下载配置文件:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

我们直接拉取的时候可能会拒绝连接,所以我们需要加一些东西。

在/etc/hosts文件添加一条199.232.68.133 raw.githubusercontent.com,这样我们就可以下载了。

接着我们手动拉取下 flannel 镜像。找到编写镜像名称和版本的地方,使用 docker pull 手动拉取一下镜像:

docker pull quay.io/coreos/flannel:v0.13.0-rc2

这里需要注意,如果大家装不上就需要使用cat kube-flannel.yml |grep image|uniq 去找我们自己需要的版本.

如果还不行大家可以看看https://www.cnblogs.com/python-wen/p/11224555.html这个博客的内容,进行修改。

等待镜像拉取结束后,可以使用 kubectl apply 命令加载下服务。

kubectl apply -f kube-flannel.yml

这里可能会出现问题,需要我们把/etc/kubernetes/admin.conf添加到~/.bash_profile中

在大约稍后1分钟左右,我们可以使用 kubectl get nodes 命令查看节点的运行状态。如果 STATUS = ready,则代表启动成功。

kubectl get nodes

5. Node节点配置

首先第一步,还是需要先设置一下 hostname 为 node1 。在 node 机器上执行:

hostnamectl set-hostname node1

接着将 master 节点的配置文件拷贝 k8s 到 node 节点。回到在 master 节点,使用 scp 命令通过 SSH传送文件:

scp $HOME/.kube/config root@node的ip:~/

随后在 node 节点执行以下命令,归档配置文件:

mkdir -p $HOME/.kube
sudo mv $HOME/config $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

我们直接使用刚才在 master 生成的节点加入命令,在 node 机器上执行。让 Node 节点加入到 master 集群内:

kubeadm join 192.168.82.106:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:eef4d7c635ad5b1c9595f63fbd5e8b8c15e1fb12b552861c5b158a4371050e27 

如果刚才的命令丢了,可以在 master 机器上使用 kubeadm token create 重新生成一条命令:

kubeadm token create --print-join-command

6. 给Node安装 Flannel

这里和 Master 安装执行方式一样,参考同上。

 

 

 

 

你可能感兴趣的:(k8s,ci/cd,k8s,ci/cd)