跳至主要內容

kubernetes入门介绍

知识库容器技术kubernetes介绍云原生大约 6 分钟

文章地址:https://www.cnblogs.com/jhno1/p/15269065.htmlopen in new window

Kubernetes基本概述

kubernetes,简称 K8s,是用 8 代替 8 个字符“ubernete”而成的缩写。

是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes 提供了应用部署,规划,更新,维护的一种机制。

KubernetesGoogle 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

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 节点内部由三个组件构成:

    1. API Server

    负责处理来自用户的请求,其主要作用就是对外提供 RESTful 的接口,包括用于查看集群状态的读请求以及改变集群状态的写请求,也是唯一一个与 etcd 集群通信的组件。

    1. ControllerController

    管理器运行了一系列的控制器进程,这些进程会按照用户的期望状态在后台不断地调节整个集群中的对象,当服务的状态发生了改变,控制器就会发现这个改变并且开始向目标状态迁移。

    1. 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打印客户端和服务版本信息