K8S学习笔记(入门)

K8S学习笔记

一、什么是K8S?
Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

通过Kubernetes你可以:
快速部署应用
快速扩展应用
无缝对接新的应用功能
节省资源,优化硬件资源的使用

k8s可支持以下功能:
基于容器的应用部署、维护和滚动升级
负载均衡和服务发现
跨机器跨地区的集群调度
自动伸缩
无状态服务和有状态服务
广泛的Volume支持
插件机制保证扩展性

二、为什么要使用容器?
1、传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。

2、新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。

3、容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚机轻量、更“透明”,这更便于监控和管理。

三、容器优势总结:

1、快速创建/部署应用:与VM虚拟机相比,容器镜像的创建更加容易。
2、持续开发、集成和部署:提供可靠且频繁的容器镜像构建/部署,并使用快速和简单的回滚(由于镜像不可变性)。
3、开发和运行相分离:在build或者release阶段创建容器镜像,使得应用和基础设施解耦。
4、开发,测试和生产环境一致性:在本地或外网(生产环境)运行的一致性。
5、云平台或其他操作系统:可以在 Ubuntu、RHEL、 CoreOS、on-prem、Google Container Engine或其它任何环境中运行。
6、Loosely coupled,分布式,弹性,微服务化:应用程序分为更小的、独立的部件,可以动态部署和管理。
7、资源隔离
8、资源利用:更高效
四、k8s架构
k8s有两个节点分为master和node,集群可以由多个master节点和node节点组成,每个节点可以是一个虚拟机也可以是一个实体机

1、master节点:又名控制节点,每个k8s集群都有一个master节点负责整个集群的管理控制,master节点包含以下几个组件:
–API Sever: 提供了HTTP Rest接口的服务进程,所有资源对象的增删改查等操作唯一入口;
–Controller Manager: k8s集群所有资源对象的自动化控制中心;
–Scheduler: k8s集群所有资源对象的自动化调度控制中心;
–ETCD: k8s集群注册服务发现中心,储存k8s集群中所有资源对象的数据。

2、Node节点:Node节点的作用是承接master分配的工作负载,node节点包含以下几个关键组件:
–kubelet:负责pod对应容器的创建、启停等操作,与master节点紧密协作;
–kube-poxy:实现k8s集群通信与负载均衡的组件;
–在node节点上,还需要一个容器运行环境,如果使用docker技术栈,还需要在nod节点上安装Docker Engine,专门负责该节点容器管理工作。

3、容器、POD:
–pod是k8s最重要且最基本的一个资源对象,一个pod可以包含多个容器在里面,每个pod至少会有一个容器;
–pod是容器的上层包装结构,这也是为什么k8s可以支持多个容器类型的原因;
–我理解k8s的定位就是一个编排与调度工具,容器只是它调度的一个资源对象而已。
4、单master节点的k8s集群:一个master节点,三个node节点,node节点中包含任意数的pod,pod里包含任意数的容器。

5、k8s的命名空间(namespace):
Namespace在k8s中主要用于实现资源隔离的目的,用户可以根据不同项目创建不同的namespace,通过k8s将资源分配到不同的namespace中,即可实现不同项目的资源隔离。

6、Deployment无状态应用的部署:
7、Service域名解析与负载均衡:
k8s的service就是微服务,pod、replica set等都是为Service服务的资源。service定义了一个服务访问的入口,客户端通过这个入口即可访问服务背后的应用实例,而service则是通过Label Selector实现关联与对接的,Replica Set保证服务集群资源始终处于期望值。
多个微服务间组成了一个强大高可用的应用服务集群。

五、k8s基本命令格式如下:kubectl [command] [TYPE] [NAME] [flags]

command:表示子命令,用于操作kubernetes的集群资源对象。例如:create,delete,get,describe,apply等
TYPE:资源对象的类型,例如:pod,service,node,rc,deployment等
NAME:资源对象名称,留空时查询全部该类型下的对象。
flags:可选参数	

六、k8s基本排错
1、在k8s集群中检查服务是否正常:
查看集群中pod状态:kubectl get pod -n 集群名
如果状态不是running状态,查看pod的详细信息:kubectl describe pod pod名 -n 集群名
如果是节点都打污点,没有可分配的节点,是集群资源不足,需要添加资源。
如果是显示容器启动失败,大部分两个原因,一个是yml文件启动命令写的有问题,没有加长命令;另一个是程序有问题,需要看程序日志,然后往下继续
2、查看程序启动日志:kubectl logs -f pod名 -n 集群名
如果日志报错连接不上其他程序,这个问题就是没有将集群中的程序的访问地址改成集群中的域名,改过试试

3、进入容器内部排查:
       有时候想检查程序内部检查程序包和配置文件是否正确,这就需要进入程序内部:
       kubectl exec -it 名字 -n 名字 /bin/bash
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值