kubeadm快速部署一个Kubernetes集群(v1.18)

介绍

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。

这个工具能通过两条指令完成一个kubernetes集群的部署:

安装要求

在开始之前,部署Kubernetes集群机器需要满足以下几个条件:

  • 一台或多台机器,操作系统 CentOS7.x-86_x64
  • 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
  • 集群中所有机器之间网络互通
  • 可以访问外网,需要拉取镜像
  • 禁止swap分区

本文使用三台机器,角色配置如下:

角色IP地址
k8s-master172.16.244.130
k8s-node1172.16.244.143
k8s-node2172.16.244.132

初始化机器,根据centos7.7配置。

安装Docker/kubeadm/kubelet

在所有节点安装Docker/kubeadm/kubelet,master和node都需要安装。

Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。

安装Docker

安装配置docker yum源。

因docker仓库在国外,拉取镜像的时候会有点慢,因此需要配置镜像下载加速器,:

添加阿里云YUM软件源

安装kubeadm,kubelet和kubectl

由于版本更新频繁,这里指定版本号部署:

部署Kubernetes Master

在master上执行。

  • –apiserver-advertise-address 集群通告地址
  • –image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
  • –kubernetes-version K8s版本,与上面安装的一致
  • –service-cidr 集群内部虚拟网络,Pod统一访问入口
  • –pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致

或者使用配置文件引导:

拷贝kubectl使用的连接k8s认证文件到默认路径:

加入Kubernetes Node

在node上执行以下操作。

向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,操作如下:

配置token永不超时。

部署容器网络(CNI)

下面介绍两种容器网络,部署一个即可,推荐Calico。

Calico

Calico是一个纯三层的数据中心网络方案,Calico支持广泛的平台,包括Kubernetes、OpenStack等。

Calico 在每一个计算节点利用 Linux Kernel 实现了一个高效的虚拟路由器( vRouter) 来负责数据转发,而每个 vRouter 通过 BGP 协议负责把自己上运行的 workload 的路由信息向整个 Calico 网络内传播。

此外,Calico 项目还实现了 Kubernetes 网络策略,提供ACL功能。

修改完后应用清单:

  • 定义Pod网络(CALICO_IPV4POOL_CIDR),与前面pod CIDR配置一样
  • 选择工作模式(CALICO_IPV4POOL_IPIP),支持BGP(Never)IPIP(Always)CrossSubnet(开启BGP并支持跨子网)

下载完后还需要修改里面配置项:

Flannel

Flannel是CoreOS维护的一个网络组件,Flannel为每个Pod提供全局唯一的IP,Flannel使用ETCD来存储Pod子网与Node IP之间的关系。flanneld守护进程在每台主机上运行,并负责维护ETCD信息和路由数据包。

测试kubernetes集群

  • 验证Pod工作
  • 验证Pod网络通信
  • 验证DNS解析

在Kubernetes集群中创建一个pod,验证是否正常运行:

访问https://NodeIP:Port(31118),若是能访问到nginx的测试页,即表示成功。

验证DNS解析。

部署 Dashboard

下载yaml文件。

默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部:

访问https://NodeIP:Port(30001),若是能访问到,即表示Dashboard部署成功。

kubeadm快速部署一个Kubernetes集群(v1.18)

创建service account并绑定默认cluster-admin管理员集群角色:

使用输出的token登录Dashboard。

kubeadm快速部署一个Kubernetes集群(v1.18)

使用Dashboard扩容web Pod。

kubeadm快速部署一个Kubernetes集群(v1.18)

本文为原创文章,未经授权禁止转载本站文章。
原文出处:兰玉磊的个人博客
原文链接:https://www.fdevops.com/2020/09/23/k8s-7048
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注