天天看点

CentOS7安装Kubernetes1.18.1并使用flannel;

一、概述

手工搭建 Kubernetes 集群是一件很繁琐的事情,为了简化这些操作,就产生了很多安装配置工具,如 Kubeadm

,Kubespray,RKE 等组件,我最终选择了官方的 Kubeadm 主要是不同的 Kubernetes 版本都有一些差异,Kubeadm

更新与支持的会好一些。Kubeadm 是 Kubernetes 官方提供的快速安装和初始化 Kubernetes

集群的工具,目前的还处于孵化开发状态,跟随 Kubernetes 每个新版本的发布都会同步更新,

强烈建议先看下官方的文档了解下各个组件与对象的作用。

https://kubernetes.io/docs/concepts/

https://kubernetes.io/docs/setup/independent/install-kubeadm/

https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/

在创建Kubernetes集群时,阿里云容器服务提供两种网络插件:Terway和Flannel。

Flannel:使用的是简单稳定的社区的Flannel CNI 插件,配合阿里云的VPC的高速网络,能给集群高性能和稳定的容器网络体验,但功能偏简单,支持的特性少,例如:不支持基于Kubernetes标准的Network Policy。

Terway:是阿里云容器服务自研的网络插件,将阿里云的弹性网卡分配给容器,支持基于Kubernetes标准的NetworkPolicy来定义容器间的访问策略,支持对单个容器做带宽的限流。对于不需要使用Network

Policy的用户,可以选择Flannel,其他情况建议选择Terway。

因此,本文主要介绍flannel的简单使用。

系统

内核

docker

ip

主机名

配置

centos 7.6

3.10.0-957.el7.x86_64

19.03.5

192.168.128.130

k8s-master

2核4G

192.168.128.131

k8s-node01

192.168.128.132

k8s-node02

注意:请确保CPU至少2核,内存2G

二、准备工作

如果各个主机启用了防火墙,需要开放Kubernetes各个组件所需要的端口,可以查看Installing kubeadm中的”Check required ports”一节。 这里简单起见在各节点禁用防火墙:

修改 <code>/etc/fstab</code> 文件,注释掉 SWAP 的自动挂载(永久关闭swap,重启后生效)

安装docker

这里就不再叙述了,请参考链接:

https://www.cnblogs.com/xiao987334176/p/11771657.html

修改主机名

注意:主机名不能带下划线,只能带中划线

否则安装k8s会报错

三、安装kubeadm,kubelet,kubectl

在各节点安装kubeadm,kubelet,kubectl

目前最新版本是:1.18.1

以上,就是master和node都需要操作的部分。

四、初始化Master节点

注意修改apiserver-advertise-address为master节点ip

参数解释:

这一步很关键,由于kubeadm 默认从官网k8s.grc.io下载所需镜像,国内无法访问,因此需要通过–image-repository指定阿里云镜像仓库地址

集群初始化成功后返回如下信息:

记录生成的最后部分内容,此内容需要在其它节点加入Kubernetes集群时执行。

输出如下:

注意保持好kubeadm join,后面会用到的。

如果yml中的"Network": "10.244.0.0/16"和kubeadm init xxx --pod-network-cidr不一样,就需要修改成一样的。不然可能会使得Node间Cluster IP不通。

由于我上面的kubeadm init xxx --pod-network-cidr就是10.244.0.0/16。所以此yaml文件就不需要更改了。

查看yaml需要的镜像

注意:这些镜像都是需要访问谷歌才行的。

但是阿里云容器镜像服务ACR里面是有的,访问链接如下:

注意:必须使用阿里云账号登录才行。

点击管理控制台

 点击左侧的镜像搜索

输入关键字:flannel:v0.12.0-amd64,选择第二个。

点击复制公网地址

 由于我这里是上海区域,所以域名是:registry.cn-shanghai。如果你选的是其他区域,域名也会不一样。

下面就是我们需要的版本号。

那么下载镜像的完整命令为:

其他镜像,也都在这里。

所以,所需要的镜像下载命令为:

为镜像打tag,保持和yaml文件一样。

注意:这些镜像,也需要在node节点执行。

加载flannel

等待几分钟,确保所有的Pod都处于Running状态

注意:coredns容器的网段是10.244.0.0/16

设置开机启动

(仅master)

必须退出一次,再次登录,就可以了 

五、node加入集群

请查看上文中的准备工作,确保都执行了!!!

修改主机名部分,改为k8s-node01

登录到node节点,确保已经安装了docker和kubeadm,kubelet,kubectl

登录到master,使用命令查看

登录到node节点,查看ip

它会创建一个flannel.1网卡,用来做flannel网络通信的。

七、使用yml发布应用

以flaskapp为例子

flaskapp-deployment.yaml

flaskapp-service.yaml

加载yml文件

查看pod状态

等待几分钟,确保为Running状态

ping pod ip

确保能正常ping通,表示flannel网络正常。

使用master ip+nodeport访问

效果如下:

注意:使用node节点ip+nodeport也可以访问。