kubernetes入门介绍
文章地址:https://www.cnblogs.com/jhno1/p/15269065.html
Kubernetes基本概述
kubernetes
,简称K8s
,是用 8 代替 8 个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes 提供了应用部署,规划,更新,维护的一种机制。
Kubernetes
是
Kubernetes
是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。
Kubernetes
拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。
kubernetes 功能
1.自动装箱
基于容器对应用运行环境的资源配置要求自动部署应用容器
2.自我修复(自愈能力)
当容器失败时,会对容器进行重启
当所部署的 Node 节点有问题时,会对容器进行重新部署和重新调度
当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务3.水平扩展
通过简单的命令、用户 UI 界面或基于 CPU 等资源使用情况,对应用容器进行规模扩大或规模剪裁
4.服务发现
用户不需使用额外的服务发现机制,就能够基于 Kubernetes 自身能力实现服务发现和负载均衡
5.滚动更新
可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新
6.版本回退
可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退
7.密钥和配置管理
在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。
8.存储编排
自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要
存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务
9.批处理
提供一次性任务,定时任务;满足批量数据处理和分析的场景
集群架构
Kubernetes 遵循非常传统的客户端服务端架构,客户端通过 RESTful 接口或者直接使用 kubectl 与 Kubernetes 集群进行通信,

Master
它主要负责接收客户端的请求,安排容器的执行并且运行控制循环,将集群的状态向目标状态进行迁移,Master 节点内部由三个组件构成:
- API Server
负责处理来自用户的请求,其主要作用就是对外提供 RESTful 的接口,包括用于查看集群状态的读请求以及改变集群状态的写请求,也是唯一一个与 etcd 集群通信的组件。
- ControllerController
管理器运行了一系列的控制器进程,这些进程会按照用户的期望状态在后台不断地调节整个集群中的对象,当服务的状态发生了改变,控制器就会发现这个改变并且开始向目标状态迁移。
- SchedulerScheduler
调度器其实为 Kubernetes 中运行的 Pod 选择部署的 Worker 节点,它会根据用户的需要选择最能满足请求的节点来运行 Pod,它会在每次需要调度 Pod 时执行。
Worker
Node节点实现相对简单一点,主要是由kubelet和kube-proxy两部分组成:

k8s 资源指令
- 基础操作
# 创建且运行一个pod
# deployment、rs、pod被自动创建
kubectl run my-nginx --image=nginx --port=80
# 增加创建副本数量
kubectl scale deployment/my-nginx --replicas = 3
# 添加service
# kubectl expose将RC、Service、Deployment或Pod作为新的Kubernetes Service公开。
kubectl expose deployment/my-nginx --port=30000 --target-port=80
# 编辑service配置文件
kubectl edit svc/my-nginx
# 其他的基础指令
# 查看集群中有几个Node
kubectl get nodes
# 查看pod
kubectl get pods
# 查看服务详情信息
kubectl describe pod my-nginx-379829228-cwlbb
# 查看已部署
kubectl get deployments
# 删除pod
kubectl delete pod my-nginx-379829228-cwlbb
# 删除部署的my-nginx服务。彻底删除pod
kubectl delete deployment my-nginx
# 删除service服务
kubectl delete service my-nginx
- 命令手册
kubenetes 命令手册,详情请查询下表:
基础命令
类型 | 命令 |
---|---|
create | 通过文件名或标准输入创建资源 |
ecpose | 将一个资源公开为一个新的 Service |
run | 在集群中运行一个特定的镜像 |
set | 在对象上设置特定的功能 |
get | 显示一个或多个资源 |
explain | 文档参考资料 |
edit | 使用默认的编辑器编辑一个资源 |
delete | 通过文件名,标准输入,资源名称或者标签选择器来删除资源 |
部署命令 | rollout |
rolling-update | 对给定的复制控制器滚动更新 |
scale | 扩容会缩容 Pod 数量,Deployment,ReplicaSet,RC 或 Job |
autoscale | 创建一个自动选择扩容或缩容并设置 Pod 数量 |
集群管理命令
类型 | 命令 |
---|---|
certificate | 修改证书资源 |
cluster-info | 显示集群信息 |
top | 显示资源(CPU/Memory/Storage)使用,需要 Heapster 运行 |
cordon | 标记节点不可调 |
uncordon | 标记节点可调度 |
drain | 驱逐节点上的应用,准备下线维护 |
taint | 修改节点 taint 标记 |
故障诊断和调试命令
类型 | 命令 |
---|---|
describe | 显示特定资源或资源组的详细信息 |
logs | 在一个 Pod 中打印一个容器日志,如果 Pod 只有一个容器,容器名称是可选的 |
attach | 附加到一个运行的容器 |
exec | 执行命令到容器 |
port-forward | 转发一个或多个本地端口到一个 pod |
proxy | 运行一个 proxy 到 Kubernetes API server |
cp | 拷贝文件或者目录到容器中 |
auth | 检查授权 |
高级命令
类型 | 命令 |
---|---|
apply | 通过文件名或标准输入对资源应用配置 |
patch | 使用补丁修改,更新资源的字段 |
replace | 通过文件名或标准输入替换一个资源 |
convert | 不同的 API 版本之间转换配置文件 |
设置命令
类型 | 命令 |
---|---|
label | 更新资源上的标签 |
annotate | 更新资源上的注释 |
completion | 用于实现 kubectl 工具自动补全 |
其他命令
类型 | 命令 |
---|---|
api-versions | 打印受支持的 API 版本 |
config | 修改 kubeconfig 文件(用于访问 API,比如配置认证信息) |
help | 所有命令帮助 |
plugin | 运行一个命令插件 |
version | 打印客户端和服务版本信息 |