k8s的理论和基础命令(一个人一个理解)

Kubernetes理论or命令

一.k8s的简介理论

理论解析

1.k8s是什么?

Kubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过Kubernetes能够进行应用的自动化部署和扩缩容。在Kubernetes中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。

  1. k8s特性?

自动化装箱:在不牺牲可用性的条件下,基于容器对资源的要求和约束自动部署容器。

自愈能力:当容器失败时,会对容器进行重启;当所部署的Node节点有问题时,会对容器进行重新部署和重新调度

水平扩容:通过简单的命令、用户界面或基于CPU的使用情况,能够对应用进行扩容和缩容。

服务发现和负载均衡:开发者不需要使用额外的服务发现机制,就能够基于Kubernetes进行服务发现和负载均衡。

自动发布和回滚:Kubernetes能够程序化的发布应用和相关的配置。如果发布有问题,Kubernetes将能够回归发生的变更

保密和配置管理:在不需要重新构建镜像的情况下,可以部署和更新保密和应用配置。

存储编排:自动挂接存储系统,这些存储系统可以来自于本地、公共云提供商(例如:GCP和AWS)、网络存储(例如:NFS、iSCSI、Gluster、Ceph、Cinder和Floker等)。

  1. k8s结构解析

Kubernetes属于主从分布式架构,主要由Master Node和Worker Node组成,以及包括客户端命令行工具kubectl和其它附加项。

如下:

  • Master Node:作为控制节点,对集群进行调度管理;Master Node由API Server、Scheduler、Cluster State Store和Controller-Manger Server所组成;
  • Worker Node作为真正的工作节点,运行业务应用的容器;Worker Node包含kubelet、kube proxy和Container Runtime;
  • kubectl用于通过命令行与API Server进行交互,而对Kubernetes进行操作,实现在集群中进行各种资源的增删改查等操作;
  • Add-on是对Kubernetes核心功能的扩展,例如增加网络和网络策略等能力。
  • repliceation 用于伸缩副本数量
  • endpoint 用于管理网络请求
  • scheduler 调度器
  • k8s的结构运行流程

②k8s工作流程:

1、准备好一个包含应用程序的Deployment的yml文件,然后通过kubectl客户端工具发送给ApiServer。

2、ApiServer接收到客户端的请求并将资源内容存储到数据库(etcd)中。

3、Controller组件(包括scheduler、replication、endpoint)监控资源变化并作出反应。

4、ReplicaSet检查数据库变化,创建期望数量的pod实例。

5、Scheduler再次检查数据库变化,发现尚未被分配到具体执行节点(node)的Pod,然后根据一组相关规则将pod分配到可以运行它们的节点上,并更新数据库,记录pod分配情况。

6、Kubelete监控数据库变化,管理后续pod的生命周期,发现被分配到它所在的节点上运行的那些pod。如果找到新pod,则会在该节点上运行这个新pod。

7、kuberproxy运行在集群各个主机上,管理网络通信,如服务发现、负载均衡。例如当有数据发送到主机时,将其路由到正确的pod或容器。对于从主机上发出的数据,它可以基于请求地址发现远程服务器,并将数据正确路由,在某些情况下会使用轮训调度算法(Round-robin)将请求发送到集群中的多个实例。

三.k8s命令使用

kubectl是Kubernetes集群的命令行接口。运行kubectl命令的语法如下所示:

$ kubectl [command] [TYPE] [NAME] [flags]

  • comand:指定要对资源执行的操作,例如create、get、describe和delete
  • TYPE:指定资源类型,资源类型是大小学敏感的,开发者能够以单数、复数和缩略的形式。
  • NAME:指定资源的名称,名称也大小写敏感的。如果省略名称,则会显示所有的资源,例如:
  • flags:指定可选的参数。例如,可以使用-s或者–server参数指定Kubernetes API server的地址和端口。

常见基础命令:

1、kubect create 创建一个资源从一个文件或标准输入

1

2

kubectl create deployment nginx --image=nginx:1.14 

kubectl create -f my-nginx.yaml

2、kubectl run 在集群中运行一个指定的镜像

1

kubectl run nginx --image=nginx:1.16 --port=80 --replicas=1

3、kubectl expose 创建Service对象以将应用程序"暴露"于网络中

1

kubectl expose deployment/nginx  --type="NodePort" --port=80 --name=nginx

4、kubectl get 显示一个或更多resources资源

1

2

3

4

5

6

7

8

9

10

kubectl get cs           # 查看集群状态

kubectl get nodes         # 查看集群节点信息

kubectl get ns           # 查看集群命名空间

kubectl get svc -n kube-system   # 查看指定命名空间的服务

kubectl get pod <pod-name> -o wide# 查看Pod详细信息

kubectl get pod <pod-name> -o yaml # 以yaml格式查看Pod详细信息

kubectl get pods         # 查看资源对象,查看所有Pod列表

kubectl get rc,service # 查看资源对象,查看rc和service列表

kubectl get pod,svc,ep --show-labels # 查看pod,svc,ep能及标签信息

kubectl get all --all-namespaces # 查看所有的命名空间

5、kubectl clster-info  显示集群信息

1

kubectl cluster-info            # 查看集群状态信息

6、kubectl describe 描述资源对象

1

2

kubectl describe nodes <node-name>  # 显示Node的详细信息

kubectl describe pods/<pod-name>    # 显示Pod的详细信息

7、kubectl scale pod扩容与缩容

1

2

kubectl scale deployment nginx --replicas 5    # 扩容

kubectl scale deployment nginx --replicas 3    # 缩容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值