K8S基础介绍(kubernetes)

Kubernetes基础介绍

Kubernetes特性:

自动装箱:构建于容器之上,基于资源依赖和其他约束自动完成容器部署。

自我修复:容器故障后自动重启、节点故障后重新调度容器,以及容器自我修复机制。

水平扩展:通过简单明了实现水平扩展,基于CPU等资源负载率的自动水平扩展。

服务发现和负载均衡:实现内部负载均衡可以实现服务访问负载。

自动发布和回滚:可以自动实现版本的发布和回滚。

秘钥和配置管理:对于密码等信息,专门提供了Secert对象为其解耦。

存储编排:支持多种不同类型的存储,包括本地存储、云存储、网络存储等。 批量处理执行:除服务型应用,还支持批处理作业CI(持续集成),如有需要,一样可以实现容器故障后修复。

Kubernetes特点:

可移植: 支持公有云,私有云,混合云,多重云(multi-cloud) 、

可扩展: 模块化, 插件化, 可挂载, 可组合

自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

Kubernetes架构:

在这里插入图片描述

MASTER

​ Master是集群的控制节点,每个k8s集群中至少需要一个Master节点来维护整个集群的管理和控制,几乎所有的控制命 令都是发给它,它负责执行具体的动作。它很重要,如果它不可用,那么我们所有的控制命令都会失效。Master节点上运行一组关键进程.

kube-apiserver (API Server API服务器):

​ 提供HTTP Rest接口的关键服务,是k8s集群里所有资源的增删查改等操 作的唯一入口,也是集群控制的入口进程。并提供认证、授权、访问控制、API注册和发现等机制

kube-controller-manager( Controller Manager控制管理器):

​ k8s里所有资源对象的自动化控制中心,可以理解为 资源对象的“大总管”。运行着所有处理集群日常任务的控制器。包括节点控制器、副本控制器、端点控制器及服务账号 和令牌控制器。负责维护集群的状态,比如故障检测、自动扩展、滚动更新等。

kube-scheduler (Scheduler调度器):

​ 负责资源调度(Pod调度)的进程,相当于“调度室”。按照预定的调度策略 将Pod调度到相应的机器上

etcd:

集群的数据存储,他存储着集群中所有的资源对象。数据存储采用的是键值对存储。保存了整个集群的状态。

Node/Worker

​ Node是集群的工作节点,运行具体的Pod,当某个Node宕机时,其工作负载会被Master自动转移到其他Node节点上。 默认情况下kubelet会向Master注册自己。一旦Node被纳入集群管理,kubelet进程就会定时向Master节点汇报自身的 情况,比如操作系统等信息,这样Master就可以获取每个Node节点的资源使用情况合理的进行调度。如果Node节点在 指定时间不上报,那么Master就会认为它“失联”,标记成“Not Ready”状态

kubelet

​ 主节点代理,负责Pod对应的容器的创建启停等任务,同时与Master节点密切协作,实现集群管理的基本功能。

kube-proxy

​ 它负责节点的网络,在主机上维护网络规则并执行连接转发。它还负责对正在服务的pods进行负载平衡。 比如一个服务可能会运行多个副本(Pod),由他来控制具体由哪个Pod提供服务。为Service提供cluster内部的服务发 现和负载均衡。

POD

​ Pod是一组紧密关联的容器集合,它们共享PID、IPC、Network和UTS namespace,是Kubernetes调度的基本单位。

​ Pod的设计理念是支持多个容器在一个Pod中共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式 组合完成服务。 每个Pod都有一个特殊的称之为“根容器”的Pause容器。Pause容器对应的镜像属于k8s平台的一部分,除了Pause容 器外,每个Pod还包含一个或多个紧急相关的用户业务容器。他为每个业务容器提供如下功能:①在pod中担任Linux命 名空间共享的基础。②启用pid命名空间,开启init进程。

Pod 常见状态介绍

1.Pending这个状态意味着,Pod 的 YAML 文件(或通过kubectl命令创建Pod)已经提交给了 Kubernetes,API 对象已 经被创建并保存在 Etcd 当中。但是,这个 Pod 里有些容器因为某种原因而不能被顺利创建。比如,调度不成功。

2.Running。这个状态下,Pod 已经调度成功,跟一个具体的节点绑定。它包含的容器都已经创建成功,并且至少有一个正 在运行中。

3.Succeeded这个状态意味着,Pod 里的所有容器都正常运行完毕,并且已经退出了。这种情况在运行一次性任务时最 为常见。

4.Failed这个状态下,Pod 里至少有一个容器以不正常的状态(非 0 的返回码)退出。这个状态的出现,意味着你得想办 法 Debug 这个容器的应用,比如查看 Pod 的 Events 和日志。

5.Unknown这是一个异常状态,意味着 Pod 的状态不能持续地被 kubelet 汇报给 kube-apiserver,这很有可能是主从 节点(Master 和 Kubelet)间的通信出现了问题。

Kubernetes常用资源项

namespace

​ 命名空间用于实现多租户的资源隔离。Namespace通过将集群内部的资源对象分配到不同的Namespace中,形成逻 辑上分组的不同项目、小组或用户组,便于不同的分组在共享使用整个集群的资源的同时还能被分别管理。

​ 命名空间为K8s集群提供虚拟的隔离作用,K8s集群初始有两个名字空间,分别是默认名字空间default和系统名字空 间kube-system,除此以外,管理员可以创建新的名字空间满足需要。

Deployment

​ 一个 Deployment 为 PodReplicaSet 提供声明式的更新能力。你负责描述 Deployment 中的 目标状态,而 Deployment 控制器(Controller) 以受控速率更改实际状态, 使其变为期望状态。你可以定义 Deployment 以创建新的 ReplicaSet,或删除现有 Deployment, 并通过新的 Deployment 收养其资源。

DaemonSet

DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。 当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。

StatefulSet

​ StatefulSet 是用来管理有状态应用的工作负载 API 对象。

ConfigMap

ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时, Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。

ConfigMap 将你的环境配置信息和 容器镜像 解耦,便于应用配置的修改。

Volume(存储卷):

K8s集群中的存储卷跟Docker的存储卷有些类似,只不过Docker的存储卷作用范围为一个容器,而K8s的存储卷的生 命周期和作用范围是一个Pod。每个Pod中声明的存储卷由Pod中的所有容器共享。K8s支持非常多的存储卷类型,特别 的,支持多种公有云平台的存储,包括AWS,Google和Azure云;支持多种分布式存储包括GlusterFS和Ceph;也支持 较容易使用的主机本地目录hostPath和NFS。K8s还支持使用Persistent Volume Claim即PVC这种逻辑存储,使用这种 存储,使得存储的使用者可以忽略后台的实际存储技术(例如AWS,Google或GlusterFS和Ceph),而将有关存储实际 技术的配置交给存储管理员通过Persistent Volume来配置。

Service

Kubernetes 中 Service 是 将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法。Service也是k8s里核心的资源对象之一,k8s里面的每个Service就是我们提起的“微服务”,之前所介绍的Pod、RC等 资源都是为Service做“嫁衣”的.

在这里插入图片描述

Kubernetes常见命令介绍

1、创建资源对象

使用yaml配置文件一次性创建service和rc

kubectl create –f myservice.yaml –f my-rc.yaml 

根据目录下所有的.yaml、yml、json文件的定义进行创建

kubectl create –f   <directory>

2、查看资源对象

kubectl get pods 

kubectl get rc,service,node 

3、描述资源对象的详细信息(定位问题时需要用到)

kubectl describe nodes  <node-name>
kubectl describe pod   <pod-name>
kubectl describe  ds  <ds-name>

4、删除资源对象

kubectl delete –f pod.yaml (删除pod.yaml定义的名称删除Pod) 

kubectl delete pods,services –l name= (删除所有包含某个标签的pod和service) 

kubectl delete pods –all (删除所有的Pod) 

注意:如果不先删除RC,直接删除Pod,删除之后,RC又自动去创建这个Pod,就相当于重启这个Pod

5、执行容器的命令

kubectl exec <pod-name> date #执行Pod的date命令,默认使用Pod的第一个容器
kubectl exec <pod-name> -c <container-name> date #指定Pod中的某个容器执行date命令
kubectl exec –it <pod-name> -c <container-name> /bin/bash #登录进某个Pod的某个容器

6、查看容器的日志

kubectl logs <pod-name> #查看某个pod的日志
kubectl logs –f <pod-name> -c <container-name> #跟踪容器的日志,相当于tail –f

container-name> /bin/bash #登录进某个Pod的某个容器


### 6、查看容器的日志 

kubectl logs #查看某个pod的日志
kubectl logs –f -c #跟踪容器的日志,相当于tail –f


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值