这篇文章是 GeekHour 的 Kubernetes一小时轻松入门 视频教程配套文字笔记,
方便大家在查找视频中的一些资料、代码或者链接地址。
大家可以先看一下视频,
然后再来看这篇文章,
这样会更容易理解一些。
1. 什么是Kubernetes
Kubernetes是一个开源的容器编排引擎,
可以用来管理容器化的应用,
包括容器的自动化的部署、扩容、缩容、升级、回滚等等,
它是Google在2014年开源的一个项目,
它的前身是Google内部的Borg系统。
2. 为什么要使用Kubernetes
在Kubernetes出现之前,
我们一般都是使用Docker来管理容器化的应用,
但是Docker只是一个单机的容器管理工具,
它只能管理单个节点上的容器,
当我们的应用程序需要运行在多个节点上的时候,
就需要使用一些其他的工具来管理这些节点,
比如Docker Swarm、Mesos、Kubernetes等等,
这些工具都是容器编排引擎,
它们可以用来管理多个节点上的容器,
但是它们之间也有一些区别,
比如Docker Swarm是Docker官方提供的一个容器编排引擎,
它的功能比较简单,
适合于一些小型的、简单的场景,
而Mesos和Kubernetes则是比较复杂的容器编排引擎,
Mesos是Apache基金会的一个开源项目,
而Kubernetes是Google在2014年开源的,
目前已经成为了CNCF(Cloud Native Computing Foundation)的一个顶级项目,
基本上已经成为了容器编排引擎的事实标准了。
3. 使用minikube搭建kubernetes集群环境
minikube是一个轻量级的kubernetes集群环境,
可以用来在本地快速搭建一个单节点的kubernetes集群,
3.1 安装minikube
minikube的安装:
1 | # macOS |
也可以到官网直接下载安装包来安装:https://minikube.sigs.k8s.io/docs/start/
3.2 启动minikube
1 | # 启动minikube |
4. 使用Multipass和k3s搭建kubernetes集群环境
minikube只能用来在本地搭建一个单节点的kubernetes集群环境,
下面介绍如何使用Multipass和k3s来搭建一个多节点的kubernetes集群环境,
4.1 Multipass介绍
Multipass是一个轻量级的虚拟机管理工具,
可以用来在本地快速创建和管理虚拟机,
相比于VirtualBox或者VMware这样的虚拟机管理工具,
Multipass更加轻量快速,
而且它还提供了一些命令行工具来方便我们管理虚拟机。
官方网址: https://Multipass.run/
4.1.1 安装Multipass
1 | # macOS |
4.1.2 Multipass常用命令
关于Multipass的一些常用命令我们可以通过multipass help
来查看,
这里大家只需要记住几个常用的命令就可以了,
1 | # 查看帮助 |
Multipass有个问题,
每次M1芯片的Mac升级之后Multipass的虚拟机都会被删除,
不知道大家有没有遇到类似的问题。
1 | # 镜像位置 |
4.2 k3s介绍
k3s 是一个轻量级的Kubernetes发行版,它是 Rancher Labs 推出的一个开源项目,
旨在简化Kubernetes的安装和维护,同时它还是CNCF认证的Kubernetes发行版。
4.2.1 创建和配置master节点
首先我们需要使用multipass创建一个名字叫做k3s的虚拟机,
1 | multipass launch --name k3s --cpus 2 --memory 8G --disk 10G |
虚拟机创建完成之后,
可以配置SSH密钥登录,
不过这一步并不是必须的,
即使不配置也可以通过multipass exec
或者multipass shell
命令来进入虚拟机,
然后我们需要在master节点上安装k3s,
使用k3s搭建kubernetes集群非常简单,
只需要执行一条命令就可以在当前节点上安装k3s,
打开刚刚创建的k3s虚拟机,
执行下面的命令就可以安装一个k3s的master节点,
1 | # 安装k3s的master节点 |
国内用户可以换成下面的命令,使用ranher的镜像源来安装:
1 | curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh - |
安装完成之后,可以通过kubectl
命令来查看集群的状态,
1 | sudo kubectl get nodes |
4.2.2 创建和配置worker节点
接下来需要在这个master节点上获取一个token,
用来作为创建worker节点时的一个认证凭证,
它保存在/var/lib/rancher/k3s/server/node-token
这个文件里面,
我们可以使用sudo cat
命令来查看一下这个文件中的内容,
1 | sudo cat /var/lib/rancher/k3s/server/node-token |
将TOKEN保存到一个环境变量中
1 | TOKEN=$(multipass exec k3s sudo cat /var/lib/rancher/k3s/server/node-token) |
保存master节点的IP地址
1 | MASTER_IP=$(multipass info k3s | grep IPv4 | awk '{print $2}') |
确认:
1 | echo $MASTER_IP |
使用刚刚的TOKEN
和MASTER_IP
来创建两个worker节点
并把它们加入到集群中
1 | # 创建两个worker节点的虚拟机 |
这样就完成了一个多节点的kubernetes集群的搭建。
5. 在线实验环境
6. kubectl常用命令
6.1 基础使用
1 | # 查看帮助 |
6.2 资源的创建和运行
1 | # 创建并运行一个指定的镜像 |
6.3 查看资源信息
1 | # 查看集群中某一类型的资源 |
6.4 资源的修改、删除和清理
1 | # 更新某个资源的标签 |
6.5 调试和交互
1 | # 进入某个Pod的容器中 |
7. Portainer的安装和使用
Portainer 是一个轻量级的容器管理工具,
可以用来管理Docker和Kubernetes,
它提供了一个Web界面来方便我们管理容器,
官方网址: https://www.portainer.io/
7.1 安装Portainer
1 | # 创建一个名字叫做portainer的虚拟机 |
当然也可以直接安装在我们刚刚创建的master节点上,
1 | # 在master节点上安装portainer,并将其暴露在NodePort 30777上 |
或者使用Helm安装
1 | # 使用Helm安装Portainer |
然后直接访问 https://localhost:30779/
或者 http://localhost:30777/
就可以了,
8. Helm的安装和使用
Helm 是一个Kubernetes的包管理工具,
可以用来管理Kubernetes的应用,
它提供了一个命令行工具来方便我们管理Kubernetes的应用,
官方网址: https://helm.sh/
8.1 安装Helm
使用包管理器安装:
1 | # macOS |
使用脚本安装
1 | $ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 |
或者
1 | curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash |