kubernetes(k8s)
理论、案例、
看清所苡看轻
将来的你一定会感激现在拼命的自己
展开
-
针对Kubernetes群集做资源限制
Kubernetes对资源的限制实际上是通过cgroup来控制的,cgroup是容器的一组用来控制内核如何运行进程的相关属性集合,针对内存、CPU各种设备都有对应的cgroup。默认情况下,Pod运行没有CPU和内存的限制,这就意味着系统中的任何pod将能够像执行该pod所在的节点一样,消耗足够多的CPU和内存,一般会针对某些应用的Pod资源进行资源限制,这个资源限制是通过resources的limits来实现的。注:以下只是在yaml文件中进行资源限制的一个片段,并不是完整的yaml文件!1)针对p原创 2020-08-26 16:50:16 · 226 阅读 · 0 评论 -
Kubernetes集群水平扩展——HPA(自动伸缩)
Kubernetes集群可以通过Replication Controller的scale机制完成服务的扩容或缩容,实现具有伸缩性的服务。Kubernetes集群自动伸缩分为:sacle手动伸缩:kubernetes资源对象的升级、回滚、扩容、缩容autoscale自动伸缩:也就是本篇博文所介绍的HPA;Kubernetes自动扩展主要分为:水平扩展:针对实例数目的增减;垂直扩展:也就是单个实例就可以使用的资源的增减,比如增加CPU、内存;一、HPA简介HPA的全称为(Horizontal P原创 2020-08-26 15:28:28 · 984 阅读 · 0 评论 -
Kubernetes的三种可视化UI界面
一、dashboard1)获取yaml文件修改并执行[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc5/aio/deploy/recommended.yaml[root@master ~]# vim recommended.yaml +39#定位到39行,修改其提供的service资源spec: type: NodePort ports: - port原创 2020-08-25 15:56:11 · 10383 阅读 · 3 评论 -
Kubernetes数据持久化之Secret与ConfigMap
ConfigMap和Secret是Kubernetes中两种特殊类型的存储卷,ConfigMap这种资源对象主要用于提供配置数据以定制程序行为,不过一些敏感的配置信息,比如像用户名、密码、密钥等通常都是由Secret这种资源对象来进行配置的,他们将相应的配置信息保存于对象中,而后在Pod资源上以存储卷的形式将其挂载并获取相应配置,以实现配置与镜像文件的解耦。一、Secret资源对象1) Secret概述Secret资源对象存储数据的方式是以键值对的方式进行存储的,在Pod资源进行Secret的方式是通原创 2020-08-24 17:19:37 · 384 阅读 · 0 评论 -
Kubernetes之Ingress-nginx部署使用
一、Ingress简介在Kubernetes中,服务和Pod的IP地址仅在集群内部网络内部使用,对于集群的应用是不可见的。为了使外部的应用能够访问集群内的服务,在Kubernetes目前提供了以下几种方案:1)NodePort2)LoadBalancer3)Ingress1)Ingress组成Ingress 是反向代理规则,用来规定 HTTP/S 请求应该被转发到哪个 Service 上,比如根据请求中不同的 Host 和 url 路径让请求落到不同的 Service 上;Ingress原创 2020-08-23 18:08:34 · 2592 阅读 · 0 评论 -
Kubernetes数据持久化之StatefulSet(自动创建PVC)
一、Kubernetes无状态服务VS有状态服务1)Kubernetes无状态服务Kubernetes无状态服务特征:1)是指该服务运行的实例不会在本地存储需要持久化的数据,并且多个实例对于同一请求响应的结果是完全一致的;2)多个实例可以共享相同的持久化数据。例如:nginx实例、tomcat实例等;3)相关的Kubernetes资源有:ReplicaSet、ReplicationController、Deployment等,由于是无状态服务,所以这些控制器创建的Pod名称都是随机性的。并且在缩原创 2020-08-21 12:09:05 · 2735 阅读 · 0 评论 -
Kubernetes数据持久化之Storage Class(自动创建PV)
通过博文Kubernetes数据持久化可以了解到Kubernets实现数据持久化的流程为:搭建NFS底层存储——>创建PV——>创建PVC——>创建pod 最终将pod中的container实现数据的持久化!从上述流程中,看似没有什么问题,但是仔细研究就会发现:PVC在向PV申请存储空间时,是根据指定PV的名称、访问模式、容量大小来决定具体向哪个PV申请空间的。打比方说:如果PV的容量是20G,定义的访问模式是WRO(只允许以读写的方式挂载到单个节点),而PVC申请的存储空间为10G,原创 2020-08-21 07:52:42 · 982 阅读 · 0 评论 -
Kubernetes数据持久化
在k8s中,Volume(数据卷)存在明确的生命周期(与包含该数据卷的容器组(pod)相同)。因此Volume的生命周期比同一容器组(pod)中任意容器的生命周期要更长,不管容器重启了多少次,数据都被保留下来。当然,如果pod不存在了,数据卷自然退出了。此时,根据pod所使用的数据卷类型不同,数据可能随着数据卷的退出而删除,也可能被真正持久化,并在下次容器组重启时仍然可以使用。从根本上来说,一个数据卷仅仅是一个可以被pod访问的目录或文件。这个目录是怎么来的,取决于该数据卷的类型(不同类型的数据卷使用不同原创 2020-08-19 19:27:13 · 684 阅读 · 0 评论 -
Kubernetes 常用命令总结
获取所有命名空间上的podkubectl get pod -o wide --all-namespaces查看pod IP时使用kubectl get services查看dsecp-sso-server-w5tx2 日志kubectl describe --namespace=default po dsecp-sso-server-w5tx2通过yaml文件创建:kubectl create -f xxx.yaml (不建议使用,无法更新,必须先delete)kubectl appl原创 2020-08-18 17:42:51 · 300 阅读 · 0 评论 -
Kubernetes——Job与CronJob
一、Job(1)Job概述Job负责处理短暂的一次性任务,即仅执行一次的任务,它保证批处理任务的一个或多个pod成功结束。Kubernetes支持以下几种Job:非并行Job:通常创建一个Pod直到其成功结束;固定结束次数的Job:在spec字段下添加completions字段。创建多个Pod,直到满足completions规定的数值。如果不添加的话,默认情况下是1个;带有工作队列的并行Job:在spec字段下添加Parallelism字段。表示几个job同时并行工作。如果不添加的话,默认情况下原创 2020-08-17 16:34:28 · 734 阅读 · 0 评论 -
Kubernetes——标签与Pod控制器详解
一、标签标签的主要作用:解决同类型的资源对象越来越多,为了更好的管理,按照标签分组;**常用的标签分类:**release(版本):stable(稳定版)、canary(金丝雀版本、可以理解为测试版)、beta(测试版)environment(环境变量):dev(开发)、qa(测试)、production(生产)application(应用):ui、as(应用软件)、pc、sctier(架构层级):frontend(前端)、backend(后端)、cache(缓存、隐藏)partition(原创 2020-08-17 14:33:58 · 527 阅读 · 0 评论 -
Kubernetes ——Namespace+ pod详解
一、Namespace1)Namespace概述Namespace是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组。常见的pods, services, replication controllers和deployments等都是属于某一个namespace的(默认是default),而node, persistentVolumes等则不属于任何namespace。Namespace常用来隔离不同的用户,比如Kubernetes自带的服务一般运行在kube-syst原创 2020-08-16 14:57:13 · 3576 阅读 · 0 评论 -
kubernetes用label控制pod的位置
如果不指定pod的位置的话,默认情况下,是由K8s中scheduler这个组件来完成的,不能人为的干预。如果是业务需要手动指定的话,那么就需要以下方法:[root@master yaml]# kubectl label nodes node02 disk=ssd//手动给node02打上一个 disk=ssd的标签[root@master yaml]# kubectl get nodes --show-labels | grep disk=ssd//查看集群中各个节点的标签(包含disk=ssd)原创 2020-08-15 09:18:05 · 720 阅读 · 0 评论 -
kubernetes 服务回滚到指定的版本
通过kubernetes资源对象的升级、回滚、扩容、缩容可以了解到kubernetes版本升级、回滚的操作与docker swarm几乎是一样的。回滚操作只能回滚到上一个版本。搭建私有仓库,使用镜像制作自定义镜像(三个版本),根据主页内容进行区分,将自定义镜像上传到私有仓库中[root@master ~]# docker run -itd --name resqistry --restart always -p 5000:5000 registry:2[root@master ~]# docker p原创 2020-08-14 18:04:58 · 2504 阅读 · 0 评论 -
kubernetes资源对象的升级、回滚、扩容、缩容
一、资源创建的方式之一,命令的方式创建资源,理解命令运行之后的动作,通过查看资源的方式,总结Pod名称的由来。当我们执行创建资源的命令后,deployment这个控制器会通过replicaset控制器去管理pod,下面通过一个实例来分析,当我们执行创建资源的命令后,k8s都做了些什么(通过其NAME即可发现规律)?运行一个deployment[root@master ~]# kubectl run test01 --image=nginx:latest --replicas=2#运行一个nginx容原创 2020-08-13 17:28:08 · 330 阅读 · 0 评论 -
kubernetes使用YAML的方式管理Kubernetes资源
在K8s中创建资源的方式有两种:命令行和YAML文件,本次博文主要介绍使用YAML文件的方式,如需使用命令行创建资源请参考kubernetes使用命令行的方式管理Kubernetes资源(升级、回滚、扩容、缩容)一、YAML文件基础YAML是专门用来配置文件的语言,非常简洁和强大。与了解的properties、XML、json等数据格式,习惯之后就会发现越来越好用。其实YAML就是结合了大部分的标记语言的特性,整合新开发的。YAML文件的特点:层次分明、结构清晰;使用简单、上手容易;功能强大、原创 2020-08-13 11:54:54 · 547 阅读 · 0 评论 -
kubernetes使用命令行的方式管理Kubernetes资源
了解Kubernetes的朋友,可能都听过这样一句话:Kubernetes中一切皆是资源!一、资源的创建与删除[root@master ~]# kubectl run test --image=nginx:latest --replicas=5//基于nginx的镜像创建一个deployment类型的控制组,名称为test,并指定副本数量为5[root@master ~]# kubectl get deployments. //查看deployment控制器NAME READY原创 2020-08-12 17:25:41 · 338 阅读 · 0 评论 -
kubernetes的部署架构以及工作原理
kubernetes 整体架构Kubernetes最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统,所以整体的架构和borg很相似,整个架构有api server,control manager,scheduler,etcd,kubelet,kube-proxy,network-plugin等相关组件完成,整体架构如下:其中:Api server,Control manager,Scheduler,Etcd属于master节点,相关组件功能如下:1.Etcd:保存了整个集群的状原创 2020-08-12 17:12:36 · 581 阅读 · 0 评论 -
Centos 7使用kubeadm部署Kubernetes 1.15
一、Kubernetes简介Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化应用。Kubernetes的目标就是让部署容器化的应用简单并且高效。Kubernetes提供了应用部署、规划、更新、维护的一种机制。Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行,管理员可以加载一个微型服务,让规划期来找到合适的位置,同时,Kubernetes也系统提升工具以及人性化方面,让用户能够方便的部署自己的应用。本片博文主要介绍如何部署Kubern原创 2020-08-11 14:10:56 · 326 阅读 · 0 评论