一切福田,不離方寸,從心而覓,感無不通。

Kubernetes(一) 跟着官方文档从零搭建K8S

前言

本文将带领读者一起, 参照着Kubernetes官方文档, 对其安装部署进行讲解. Kubernetes更新迭代很快, 书上、网上等教程可能并不能适用于新版本, 但官方文档能.

阅读这篇文章你能收获到:

  • 如何阅读Kubernetes官方安装指南并搭建一个Kubernetes环境.
  • Kubernetes安装过程中的注意事项.
  • 避过常见的坑.

阅读本文你需要:

  • 熟悉Linux命令.
  • 知道Kubernetes是用来干什么的 (不然装它干啥(ಥ_ಥ)).
  • 知道Docker

器材准备

文档链接: Before you begin

序号 名称 数量 备注
1 服务器 2 操作系统: Linux(centos7, 其它操作系统也可, 安装过程类似, 可参考官方文档)
机器配置: CPU >= 2, 内存 >= 2G

官网找到kubeadm安装文档入口, 文档很详细. 英文阅读没有障碍的读者推荐直接查看英文文档, 中文文档不全且更新不及时安装时可能存在问题.


前期准备

笔者已经预先安装好了两台虚拟机, centos7(CPUx2, 内存2.5G). 并在路由器上固定了这两个虚拟机的IP地址.


修改hostname

 

修改后, 两台虚拟机的配置如下:

 

确认MAC和product_uuid的唯一性

文档链接: Verify the MAC address and product_uuid are unique for every node

 

注: 如果你的centos7没有ifconfig命令, 可以执行yum install net-tools进行安装.

配置防火墙

文档链接: Check required ports

由于是本地内网测试环境, 笔者图方便, 直接关闭了防火墙. 若安全要求较高, 可以参考官方文档放行必要端口.

 

禁用SELinux

文档链接: coredns pods have CrashLoopBackOff or Error state

修改/etc/selinux/config, 设置SELINUX=disabled. 重启机器.

 

禁用交换分区

文档链接: Before you begin

Swap disabled. You MUST disable swap in order for the kubelet to work properly.

编辑/etc/fstab, 将swap注释掉. 重启机器.

 

安装Docker

文档链接: Get Docker Engine – Community for CentOS

Docker官方文档对安装步骤描述已经足够详细, 过程并不复杂, 本文便不再赘述.

  • Docker请使用18.09, k8s暂不支持Docker最新版19.x, 安装时请按照文档描述的方式明确指定版本号yum install docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io.
  • 若网络不好, 可换用国内源, 阿里云、中科大等都可. 此处附上阿里云源docker安装文档地址: 容器镜像服务.
  • 安装完毕后, 建议将docker源替换为国内. 推荐阿里云镜像加速, 有阿里云账号即可免费使用.阿里云 -> 容器镜像服务 -> 镜像中心 -> 镜像加速

配置Docker

文档地址: Container runtimes

修改/etc/docker/daemon.json为如下内容:

 

  • 其中https://xxxxxxxx.mirror.aliyuncs.com阿里云镜像加速地址, xxxxxxxx需要替换为自己账户中的地址. 如图:

安装配置完毕后执行:

 

安装Kubernetes

文档地址: Installing kubeadm, kubelet and kubectl

添加源

由于国内网络原因, 官方文档中的地址不可用, 本文替换为阿里云镜像地址, 执行以下代码即可:

 

安装

 

修改网络配置

 

注意: 至此, 以上的全部操作, 在Worker机器上也需要执行. 注意hostname等不要相同.

初始化Master

生成初始化文件

 

该文件有两处需要修改:

  • advertiseAddress: 1.2.3.4修改为本机地址
  • imageRepository: k8s.gcr.io修改为imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers

修改完毕后文件如下:

 

下载镜像

 

[版权声明]
本文发布于朴瑞卿的博客, 允许非商业用途转载, 但转载必须保留原作者朴瑞卿 及链接:blog.piaoruiqing.com. 如有授权方面的协商或合作, 请联系邮箱: piaoruiqing@gmail.com.

执行初始化

 

等待执行完毕后, 会输出如下内容:

 

最后两行需要保存下来, kubeadm join ...是worker节点加入所需要执行的命令.

接下来配置环境, 让当前用户可以执行kubectl命令:

 

测试一下: 此处的NotReady是因为网络还没配置.

 

配置网络

文档地址: Instructions

下载描述文件

 

打开calico.yaml, 将192.168.0.0/16修改为10.96.0.0/12

需要注意的是, calico.yaml中的IP和kubeadm-init.yaml需要保持一致, 要么初始化前修改kubeadm-init.yaml, 要么初始化后修改calico.yaml.

执行kubectl apply -f calico.yaml初始化网络.

此时查看node信息, master的状态已经是Ready了.

 

安装Dashboard

文档地址: Web UI (Dashboard)

部署Dashboard

文档地址: Deploying the Dashboard UI

 

部署完毕后, 执行kubectl get pods --all-namespaces查看pods状态

 

创建用户

文档地址: Creating sample user

创建一个用于登录Dashboard的用户. 创建文件dashboard-adminuser.yaml内容如下:

 

执行命令kubectl apply -f dashboard-adminuser.yaml.

生成证书

文档地址: Accessing Dashboard 1.7.X and above

官方文档中提供了登录1.7.X以上版本的登录方式, 但并不清晰, 笔者没有完全按照该文档的方式进行操作.

 

第三条命令生成证书时会提示输入密码, 可以直接两次回车跳过.

kubecfg.p12即需要导入客户端机器的证书. 将证书拷贝到客户端机器上, 导入即可.

 

  • 需要注意的是: 若生成证书时跳过了密码, 导入时提示填写密码直接回车即可, 不要纠结密码哪来的 (゚▽゚)/

此时我们可以登录面板了, 访问地址: https://{k8s-master-ip}:6443/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login, 登录时会提示选择证书, 确认后会提示输入当前用户名密码(注意是电脑的用户名密码).



登录Dashboard

文档地址:Bearer Token

执行kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}'), 获取Token.

 

复制该Token到登录页, 点击登录即可, 效果如下:


添加Worker节点

重复执行 前期准备-修改hostname ~ 安装Kubernetes-修改网络配置的全部操作, 初始化一个Worker机器.

执行如下命令将Worker加入集群:

 

  • 注意: 此处的秘钥是初始化Master后生成的, 参考前文.

添加完毕后, 在Master上查看节点状态:

 

在面板上也可查看:


如果这篇文章对您有帮助,请点个赞吧 ( ̄▽ ̄)"

参考文献

系列文章

欢迎关注公众号(代码如诗):


[版权声明]
本文发布于朴瑞卿的博客, 允许非商业用途转载, 但转载必须保留原作者朴瑞卿 及链接:blog.piaoruiqing.com. 如有授权方面的协商或合作, 请联系邮箱: piaoruiqing@gmail.com.

作者:草堂笺
链接:https://juejin.cn/post/6844903943051411469
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。