Kubernetes(简称 K8s)是一款开源平台,用于自动化容器化应用的部署、扩展和管理。它可以帮助我们管理大规模的容器集群,优化资源的分配,并实现自动化的监控和弹性伸缩。下面是常用的一些命令,以及如何在 K8s 上部署应用的一些实践。
基本概念
在开始之前,我们来了解一下 Kubernetes 的一些基本概念:
- Pod:Kubernetes 中最小的可部署单元,一个 Pod 可以包含一个或多个容器。Pod 内的容器共享相同的网络、存储卷和调度策略。通常,一个 Pod 用于运行一个应用实例。
- Deployment:一种管理 Pod 副本的控制器,它确保指定数量的 Pod 副本在集群中始终处于运行状态。你可以通过 Deployment 轻松地进行应用的滚动更新和版本回滚。
- Service:一种抽象,允许你通过固定的 IP 地址和端口访问一组 Pod。它为 Pod 提供了一个稳定的入口点,并负责将请求负载均衡到不同的 Pod。
- ReplicaSet:负责维护一组指定数量的 Pod 副本。通常通过 Deployment 创建和管理 ReplicaSet,确保指定数量的 Pod 副本始终在集群中运行。
- Namespace:Kubernetes 中的虚拟集群,用于将集群资源进行逻辑隔离。可以通过 Namespace 来管理不同环境(如开发、测试和生产环境)的资源。
- Node:Kubernetes 集群中的工作机器,负责运行 Pod;每个 Node 都包含一个 Kubelet(管理 Pod 和容器的代理)和一个容器运行时(如 Docker)。
常用命令
1 | # 查看 Kubectl 版本 |
一般情况下,我们会安装 Kuboard
等一些可视化的管理界面,这样可以简化我们的一些操作,避免登录服务器在输入相关命令去执行。
应用的部署
K8s 是通过创建相关的配置文件来描述部署应用的相关信息,如:从哪里拉取应用的镜像、需要部署几个节点、应用在集群当中的标记是什么等。下面是一个示例配置文件:
1 | apiVersion: apps/v1 |
最后可以通过 kubectl apply -f xxx.yaml
来启动我们的应用;此外,也可以结合 Jenkins 进行自动化部署。