k8s部署实战

Jan 12, 2022


前言

k8s全称kubernetes,这个名字大家应该都不陌生,k8s是为容器服务而生的一个可移植容器的编排管理工具,越来越多的公司正在拥抱k8s,并且当前k8s已经主导了云业务流程,推动了微服务架构等热门技术的普及和落地,正在如火如荼的发展。

本文主要介绍k8s的部署实施方法。

k8s一共有三种方式部署目前一共三种部署方式:

  • Minikube:官方部署工具,可以在本地快速运行一个单点的k8s,可以用于日常开发和学习使用。
  • Kubeadm:官方部署工具,用于快速部署和节点管理等,使用要求较多,可以用于生产环境部署。
  • 二进制包:即手工部署,需要自己下载二进制包,并手动配置和启动k8s服务。

Minikube部署

对于开发和学习使用,Minikube是最好的选择,因为部署非常简单,可以节省大量时间,不用陷入各种配置细节。

使用Minikube需要先安装Minikube。

官方文档提供了多种安装方式,在本文我们使用64位的CentOS 7,使用如下方式安装:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

安装完成后,使用如下命令启动:

minikube start

正确执行结果如下:

😄  minikube v1.24.0 on Centos 7.6.1810 (kvm/amd64)
✨  Using the docker driver based on existing profile
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
🔄  Restarting existing docker container for "minikube" ...
🐳  Preparing Kubernetes v1.22.3 on Docker 20.10.8 ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

minikube支持基于docker,kvm2,virtualBox,裸金属,podman等多种环境部署,因此start之前,必须已经安装如上环境之一,并且需要安装ssh,否则可能安装失败。

笔者这里是安装了docker环境,因此启动过程使用了docker作为k8s的驱动,在启动日志的第二行即可看到:

✨  Using the docker driver based on existing profile

启动完成之后,可以看到一个正在运行的docker容器:

$> docker ps
CONTAINER ID   IMAGE                                 COMMAND                  CREATED       STATUS       PORTS                                                                                                                                  NAMES
7f2230cc94fb   gcr.io/k8s-minikube/kicbase:v0.0.28   "/usr/local/bin/entr…"   4 hours ago   Up 2 hours   127.0.0.1:49162->22/tcp, 127.0.0.1:49161->2376/tcp, 127.0.0.1:49160->5000/tcp, 127.0.0.1:49159->8443/tcp, 127.0.0.1:49158->32443/tcp   minikube

如果你的机器上已经安装kubectl, minikube还会自动将kubectl配置为使用minikube机群,可以看到启动日志的最后一行:

🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

如果没有安装kubectl的话,可以使用minikube kubectl --代替kubectl,minikube会自动下载合适的kubectl版本进行操作,但是每次使用kubectl命令都要输入这个命令也比较麻烦,可以为这个命令设置别名:

alias kubectl="minikube kubectl --"

到这里本地一个本地开发的k8s集群就部署好了,非常简单。

Kubeadm部署

二进制包部署

参考资料

[1]: 使用kubeadm快速部署一套K8S集群以及众多神坑记录