文章目录
- kubernetes的基本使用
- 1、部署方式
- 1、部署方式的演进图
- 2、各部署方式的特点
- 2、架构的简单说明
- 1、架构简图
- 2、各组件说明
- 1、控制平面组件(Control Plane Components)
- 1、kube-apiserver
- 2、etcd
- 3、kube-scheduler
- 4、kube-controller-manager
- 5、cloud-controller-manager
- 2、Node 组件
- 1、kubelet
- 2、kube-proxy
- 3、容器运行时(Container Runtime)
- 3、命令行工具 (kubectl)
- 1、语法格式
- 2、Kubectl的常用命令
- 1、get类
- 2、apply类
- 3、副本伸缩类
- 4、删除类
kubernetes的基本使用
详情请参考-非常值得看:
- 官网-k8s概念
- 官网-命令行工具
1、部署方式
1、部署方式的演进图
2、各部署方式的特点
- **传统部署时代:**各个组织是在物理服务器上运行应用程序。 由于无法限制在物理服务器中运行的应用程序资源使用,因此会导致资源分配问题。
- **虚拟化部署时代:**虚拟化技术允许你在单个物理服务器的 CPU 上运行多台虚拟机(VM)。 虚拟化能使应用程序在不同 VM 之间被彼此隔离,且能提供一定程度的安全性, 因为一个应用程序的信息不能被另一应用程序随意访问。
- **容器部署时代:**容器比起 VM 被认为是更轻量级的。且与 VM 类似,每个容器都具有自己的文件系统、CPU、内存、进程空间等。
- 敏捷应用程序的创建和部署:与使用 VM 镜像相比,提高了容器镜像创建的简便性和效率。
- 持续开发、集成和部署:通过快速简单的回滚(由于镜像不可变性), 提供可靠且频繁的容器镜像构建和部署。
- 关注开发与运维的分离:在构建、发布时创建应用程序容器镜像,而不是在部署时, 从而将应用程序与基础架构分离。
- 以应用程序为中心的管理:提高抽象级别,从在虚拟硬件上运行 OS 到使用逻辑资源在 OS 上运行应用程序。
- 松散耦合、分布式、弹性、解放的微服务:应用程序被分解成较小的独立部分, 并且可以动态部署和管理 - 而不是在一台大型单机上整体运行。
2、架构的简单说明
1、架构简图
- 一组工作机器,称为 节点, 会运行容器化应用程序。每个集群至少有一个工作节点。
- 工作节点会托管 Pod,而 Pod 就是作为应用负载的组件。
- 控制平面管理集群中的工作节点和 Pod。
- node,pod,container
2、各组件说明
1、控制平面组件(Control Plane Components)
1、kube-apiserver
- Kubernetes API 服务器的主要实现是 kube-apiserver。
- API 服务器是 负责公开了 Kubernetes API,负责处理接受请求的工作。 API 服务器是 Kubernetes 控制平面的前端。
2、etcd
- 一致且高度可用的键值存储,用作 Kubernetes 的所有集群数据的后台数据库。
3、kube-scheduler
- kube-scheduler 负责监视新创建的、未指定运行节点(node)的 Pods, 并选择节点来让 Pod 在上面运行。
4、kube-controller-manager
- kube-controller-manager负责运行控制器进程。
5、cloud-controller-manager
- cloud-controller-manager仅运行特定于云平台的控制器。在本地计算机中运行学习环境, 所部署的集群不需要有云控制器管理器。
2、Node 组件
节点组件会在每个节点上运行,负责维护运行的 Pod 并提供 Kubernetes 运行环境。
1、kubelet
- kubelet会在集群中每个节点(node)上运行。 它保证容器(containers)都运行在 Pod中。
2、kube-proxy
- kube-proxy是集群中每个节点(node)上所运行的网络代理, 实现 Kubernetes 服务(Service)概念的一部分。kube-proxy 维护节点上的一些网络规则, 这些网络规则会允许从集群内部或外部的网络会话与 Pod 进行网络通信。
3、容器运行时(Container Runtime)
- 容器运行环境是负责运行容器的软件。
- Kubernetes 支持许多容器运行环境,例如 containerd 以及 ==Kubernetes CRI (容器运行环境接口)==的其他任何实现。
3、命令行工具 (kubectl)
-
官网-命令详细参考
-
Kubernetes 提供 kubectl 是使用 Kubernetes API 与 Kubernetes 集群进行通信的命令行工具。
1、语法格式
kubectl [command] [TYPE] [NAME] [flags]
其中 command
、TYPE
、NAME
和 flags
分别是:
-
command
:指定要对一个或多个资源执行的操作,例如create
、get
、describe
、delete
。 -
TYPE
:指定资源类型。资源类型不区分大小写, 可以指定单数、复数或缩写形式。例如,以下命令输出相同的结果:kubectl get pod pod1 kubectl get pods pod1 kubectl get po pod1
-
NAME
:指定资源的名称。名称区分大小写。 如果省略名称,则显示所有资源的详细信息。例如:kubectl get pods
。在对多个资源执行操作时,你可以按类型和名称指定每个资源,或指定一个或多个文件:
-
要按类型和名称指定资源:
-
flags
: 指定可选的参数。例如,可以使用-s
或--server
参数指定 Kubernetes API 服务器的地址和端口。
2、Kubectl的常用命令
--all-namespaces
参数的间歇为kubectl -A
1、get类
# get 命令的基本输出
kubectl get services # 列出当前命名空间下的所有 services
kubectl get pods --all-namespaces # 列出所有命名空间下的全部的 Pods
kubectl get pods -o wide # 列出当前命名空间下的全部 Pods,并显示更详细的信息
kubectl get deployment my-dep # 列出某个特定的 Deployment
kubectl get pods # 列出当前命名空间下的全部 Pods
kubectl get pod my-pod -o yaml # 获取一个 pod 的 YAML
# describe 命令的详细输出
kubectl describe nodes my-node
kubectl describe pods my-pod
2、apply类
kubectl apply -f ./my-manifest.yaml # 创建资源
kubectl apply -f ./my1.yaml -f ./my2.yaml # 使用多个文件创建
kubectl apply -f ./dir # 基于目录下的所有清单文件创建资源
kubectl apply -f https://git.io/vPieo # 从 URL 中创建资源
kubectl create deployment nginx --image=nginx # 启动单实例 nginx
3、副本伸缩类
kubectl scale --replicas=3 rs/foo # 将名为 'foo' 的副本集伸缩到 3 副本
kubectl scale --replicas=3 -f foo.yaml # 将在 "foo.yaml" 中的特定资源伸缩到 3 个副本
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql # 如果名为 mysql 的 Deployment 的副本当前是 2,那么将它伸缩到 3
kubectl scale --replicas=5 rc/foo rc/bar rc/baz # 伸缩多个副本控制器
4、删除类
kubectl delete -f ./pod.json # 删除在 pod.json 中指定的类型和名称的 Pod
kubectl delete pod,service baz foo # 删除名称为 "baz" 和 "foo" 的 Pod 和服务