kubernetes入门到精通
kubernetes学习从入门到熟练掌握
菲宇
这个作者很懒,什么都没留下…
展开
-
kubernetes之helm简介、安装、配置、使用指南
目录helm简介Helm 组件及相关术语HelmTillerChartRepoistoryReleaseHelm工作原理helm部署一、Helm 客户端安装二、Helm 服务端安装Tiller三、给 Tiller 授权四、验证 Tiller 是否安装成功五、卸载 Helm 服务器端 Tiller六、Helm 使用Helm Chart ...原创 2018-08-22 16:03:38 · 137851 阅读 · 18 评论 -
Kubernetes集群中使用calico做网络驱动
参照calico官网,有几种安装方式https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/calico原创 2018-09-12 22:09:17 · 840 阅读 · 0 评论 -
Kubernetes存储系统介绍及机制实现
一、Kubernetes中存储的应用场景在Kubernetes中部署和运行的服务大致分为:1. 无状态服务Kubernetes使用ReplicaSet来保证一个服务的实例数量,如果说某个Pod实例由于某种原因挂掉或崩溃,ReplicaSet会立刻用这个Pod的模版新启一个Pod来替代它。由于是无状态的服务,新Pod与旧Pod一模一样。此外Kubernetes通过Service(一个Se...转载 2018-09-13 21:32:00 · 375 阅读 · 0 评论 -
kubernetes使用ceph作为存储挂载
一、在ceph集群上操作:1、创建池(主要使用存储类来进行持久卷的挂载,其他的挂载方式不好使也太麻烦):ceph osd pool create k8s 64二、在k8s上操作:1、安装客户端(客户端版本与ceph集群的版本最好一致,不然创建image的时候死活创建不了):给yum增加一个Ceph源(这里以网易源为例)。tee /etc/yum.repos.d/ceph...转载 2018-09-24 22:03:12 · 2057 阅读 · 3 评论 -
Kubernetes之kubectl命令行工具简介、安装配置及常用命令
kubectl概述kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。运行kubectl命令的语法如下所示:$ kubectl [command] [TYPE] [NAME] [flags]comand:指定要对资源执行的操作,例如create、get、describe和deleteTYPE:指定...原创 2018-08-08 16:56:50 · 56788 阅读 · 0 评论 -
二进制包部署管理Kubernetes集群
K8S集群部署有几种方式:kubeadm、minikube和二进制包。前两者属于自动部署,简化部署操作,自动部署屏蔽了很多细节,使得对各个模块感知很少。这篇文章是使用二进制包部署Kubernetes集群。一、架构拓扑图二、环境规划 角色 IP 组件 master 192.168.0.211...原创 2017-11-21 14:11:00 · 3830 阅读 · 1 评论 -
Centos7使用yum方式部署Kubernetes1.5集群
1、环境介绍及准备:1.1 物理机操作系统 物理机操作系统采用Centos7.3 64位,细节如下。[root@localhost ~]# uname -aLinux localhost.localdomain 3.10.0-514.6.1.el7.x86_64 #1 SMP Wed Jan 18 13:06:36 UTC 2017 x86_64 x86_64 x86_64 GN...转载 2018-08-17 14:05:49 · 2724 阅读 · 0 评论 -
Kubernetes-核心资源之Pod
1、Pod概述在Kubernetes集群中,Pod是所有业务类型的基础,它是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及如何运行的规范。在Pod中,所有容器都被同一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务相关的多个应用容器。Kubernetes不只是支持Docker容器,它也支持其他容器。Pod 的上下文可以理解成多个linu...转载 2018-08-17 13:58:31 · 1997 阅读 · 0 评论 -
Kubernetes-整体概述和架构
1、Kubernetes是什么Kubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过Kubernetes能够进行应用的自动化部署和扩缩容。在Kubernetes中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。Kubernetes积累了作为Google生产环境运行工作负载15年的经验,并吸收了来自于社区的最佳想法和实践。Kubernetes经过这几年的快速发...转载 2018-08-17 14:00:36 · 4801 阅读 · 0 评论 -
Kubernetes-核心资源之Service
有三种模式:userspace、iptables、ipvs在Kubernetes中,Pods是有生命周期的。它们被创建、被终止,但不能被复活。在Kubernetes中通过ReplicationControllers动态的创建和删除Pod。然后,每一个Pod都拥有自己的IP地址,但是这些IP地址随着时间会发生变化。这会导致一个问题:如果在Kubernetes集群中,前端的Pod需要调用后端的Po...转载 2018-08-17 14:01:20 · 826 阅读 · 0 评论 -
Kubernetes-存储卷Volume
1、存储卷概述由于容器本身是非持久化的,因此需要解决在容器中运行应用程序遇到的一些问题。首先,当容器崩溃时,kubelet将重新启动容器,但是写入容器的文件将会丢失,容器将会以镜像的初始状态重新开始;第二,在通过一个Pod中一起运行的容器,通常需要共享容器之间一些文件。Kubernetes通过存储卷解决上述的两个问题。在Docker有存储卷的概念卷,但Docker中存储卷只是磁盘的或另一个...转载 2018-08-17 14:04:21 · 1191 阅读 · 0 评论 -
Kubernetes-核心资源之Ingress
1、Ingress在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的。为了使外部的应用能够访问集群内的服务,在Kubernetes中可以通过NodePort和LoadBalancer这两种类型的服务,或者使用Ingress。Ingress本质是通过http代理服务器将外部的http请求转发到集群内部的后端服务。Kubernetes目前支持GCE...转载 2018-08-17 14:05:02 · 1321 阅读 · 0 评论 -
Kunbernetes-基于NFS的存储
1、NFS介绍NFS是Network File System的简写,即网络文件系统,NFS是FreeBSD支持的文件系统中的一种。NFS基于RPC(Remote Procedure Call)远程过程调用实现,其允许一个系统在网络上与它人共享目录和文件。通过使用NFS,用户和程序就可以像访问本地文件一样访问远端系统上的文件。NFS是一个非常稳定的,可移植的网络文件系统。具备可扩展和高性能等特性...转载 2018-08-17 14:06:15 · 464 阅读 · 0 评论 -
Kubernetes-配置字典ConfigMap
1、ConfigMap概述很多生产环境中的应用程序配置较为复杂,可能需要多个config文件、命令行参数和环境变量的组合。使用容器部署时,把配置应该从应用程序镜像中解耦出来,以保证镜像的可移植性。尽管Secret允许类似于验证信息和秘钥等信息从应用中解耦出来,但在K8S1.2前并没有为了普通的或者非secret配置而存在的对象。在K8S1.2后引入ConfigMap来处理这种类型的配置数据。...转载 2018-08-17 14:07:10 · 9775 阅读 · 2 评论 -
Kubernetes-kube-dns 和服务发现
服务发现kubernetes 提供了 service 的概念可以通过 VIP 访问 pod 提供的服务,但是在使用的时候还有一个问题:怎么知道某个应用的 VIP?比如我们有两个应用,一个 app,一个 是 db,每个应用使用 rc 进行管理,并通过 service 暴露出端口提供服务。app 需要连接到 db 应用,我们只知道 db 应用的名称,但是并不知道它的 VIP 地址。最简单的办法...转载 2018-08-18 20:29:22 · 3462 阅读 · 0 评论 -
Kubernetes之Pod、 Replicaset、 Service、Deployment和Label
deploy控制RS,RS控制Pod,这一整套,向外提供稳定可靠的Service。1、Pod:Pod是一个逻辑概念,它是Kubernetes资源调度的单元,一般会把一组功能强相关的容器逻辑上称之为一个pod,Pod就是所说的实例。作为一个逻辑概念,pod本身没有资源,pod中的容器具有资源,创建pod,可以通过定义pod模块。Pod是一组紧密关联的容器集合,它们共享PID、IPC...原创 2018-08-18 20:55:31 · 15270 阅读 · 6 评论 -
Kubernetes-身份认证
1、Kubernetes中的用户所有的系统都存在访问和使用其的用户,Kubernetes也一样,在Kubernetes集群中有存在两类用户:service accounts:由Kubernetes进行管理的特殊用户; 普通用户:普通用户是由外部应用进行管理的用户。对于普通用户,Kubernetes管理员只负责为其分配私钥。普通用户可能来自于Keystone或google中,或者甚至是存...转载 2018-08-19 10:10:24 · 1522 阅读 · 0 评论 -
Kubernetes-基于RBAC的授权
1、RBAC介绍在Kubernetes中,授权有ABAC(基于属性的访问控制)、RBAC(基于角色的访问控制)、Webhook、Node、AlwaysDeny(一直拒绝)和AlwaysAllow(一直允许)这6种模式。从1.6版本起,Kubernetes 默认启用RBAC访问控制策略。从1.8开始,RBAC已作为稳定的功能。通过设置–authorization-mode=RBAC,启用RABC...转载 2018-08-19 10:11:15 · 1108 阅读 · 0 评论 -
Kunbernetes-基于Nexus构建私有镜像仓库
1、 安装NexusNexus是Sonatype提供的仓库管理平台,Nuexus Repository OSS3能够支持Maven、npm、Docker、YUM、Helm等格式数据的存储和发布;并且能够与Jekins、SonaQube和Eclipse等工具进行集成。Nexus支持作为宿主和代理存储库的Docker存储库,可以直接将这些存储库暴露给客户端工具;也可以以存储库组的方式暴露给客户端...转载 2018-08-19 10:12:50 · 1116 阅读 · 0 评论 -
Kubernetes HPA Controller工作原理
HPA Controller 介绍关于Kubernetes Horizontal Pod Autoscaler(简称HPA)的概念和使用介绍,请参考以下官方文档链接,在这里我不再赘述。https://kubernetes.io/docs/user-guide/horizontal-pod-autoscaling/ https://github.com/kubernetes/communi...转载 2018-08-20 10:47:44 · 1719 阅读 · 0 评论 -
Kubernetes之Kubelet组件解析
概述Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kuberntes运行时环境,主要完成以下使命: 1.监视分配给该Node节点的pods 2.挂载pod所需要的volumes 3.下载pod的secret 4.通过docker/rkt来运行pod中的容器 5.周期的执行pod中为容器定义的liveness探针 6.上报pod的状态给系统的其他组件 7....转载 2018-08-21 11:16:49 · 5217 阅读 · 0 评论 -
Kubernetes 之APIServer组件简介
API Server简介k8s API Server提供了k8s各类资源对象(pod,RC,Service等)的增删改查及watch等HTTP Rest接口,是整个系统的数据总线和数据中心。kubernetes API Server的功能:提供了集群管理的REST API接口(包括认证授权、数据校验以及集群状态变更); 提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Se...转载 2018-08-21 11:20:30 · 34785 阅读 · 3 评论 -
Kubernetes-控制器之Deployment
简述Deployment为Pod和ReplicaSet提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController来方便的管理应用。典型的应用场景包括:定义Deployment来创建Pod和ReplicaSet 滚动升级和回滚应用 扩容和缩容 暂停和继续Deployment比如一个简单的nginx应用可以定义为apiVersio...转载 2018-08-24 09:12:08 · 11660 阅读 · 0 评论 -
Kubernetes-控制器之Job和CronJob
JobJob负责批量处理短暂的一次性任务 (short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。Kubernetes支持以下几种Job:非并行Job:通常创建一个Pod直至其成功结束 固定结束次数的Job:设置.spec.completions,创建多个Pod,直到.spec.completions个Pod成功结束 ...转载 2018-08-24 09:13:32 · 926 阅读 · 0 评论 -
kubectl命令之kubectl apply
kubectl apply通过文件名或控制台输入,对资源进行配置。摘要通过文件名或控制台输入,对资源进行配置。接受JSON和YAML格式的描述文件。kubectl apply -f FILENAME示例# 将pod.json中的配置应用到pod$ kubectl apply -f ./pod.json# 将控制台输入的JSON配置应用到Pod$ cat po...转载 2018-08-24 09:17:28 · 52526 阅读 · 1 评论 -
kubeadm安装Kubernetes1.11集群
集群环境主机名称 IP 备注 操作系统 master 192.168.0.8 docker、kubectl、kubelet、kubeadm、flannel centos7.3 node01 192.168.0.9 docker、kubectl、kubelet、kubeadm centos7.3 node02 192.168...原创 2018-08-25 16:49:58 · 14195 阅读 · 1 评论 -
Kubernetes-持久化存储卷PersistentVolume
1、持久化存储卷和声明介绍PersistentVolume(PV)用于为用户和管理员提供如何提供和消费存储的API,PV由管理员在集群中提供的存储。它就像Node一样是集群中的一种资源。PersistentVolume 也是和存储卷一样的一种插件,但其有着自己独立的生命周期。PersistentVolumeClaim (PVC)是用户对存储的请求,类似于Pod消费Node资源,PVC消费PV资...转载 2018-09-03 21:30:53 · 9000 阅读 · 0 评论 -
Kubernetes-基于StorageClass的动态存储供应
1、存储类介绍Kubernetes集群管理员通过提供不同的存储类,可以满足用户不同的服务质量级别、备份策略和任意策略要求的存储需求。动态存储卷供应使用StorageClass进行实现,其允许存储卷按需被创建。如果没有动态存储供应,Kubernetes集群的管理员将不得不通过手工的方式类创建新的存储卷。通过动态存储卷,Kubernetes将能够按照用户的需要,自动创建其需要的存储。基于Sto...转载 2018-09-03 21:31:41 · 19527 阅读 · 1 评论 -
kubetnetes 之存储 PV PVC
概述 k8s最初用于管理无状态的服务,单随着越来越多的应用迁移的k8s平台,管理存储资源成为一个非常重要的功能。k8s使用两种资源管理存储:PersistentVolume(一些简称PV):由管理员添加的的一个存储的描述,是一个全局资源,包含存储的类型,存储的大小和访问模式等。它的生命周期独立于Pod,例如当使用它的Pod销毁时对PV没有影响。PersistentVolumeCla...转载 2018-09-07 08:53:45 · 530 阅读 · 0 评论 -
Kubernetes之Secrets
Secrets是Kubernetes中一种对象类型,用来保存密码、私钥、口令等敏感信息。与直接将敏感信息嵌入image、pod相比,Secrets更安全、更灵活,用户对敏感信息的控制力更强。同Docker对敏感信息的管理类似,首先用户创建Secrets将敏感信息加密后保存在集群中,创建pod时通过volume、环境变量引用Secrets。创建Secrets假设pod需要访问数据库。首先将用...转载 2018-09-09 12:14:31 · 787 阅读 · 0 评论 -
kubernetes之StatefulSet
StatefulSet k8s的statefulset相信很多人都用过,在1.5之后才引入的,1.5之前用的是petset,关于petset在之前的老版本的paas开发中用的就是petset,很多不足的地方,等会儿会说到这点。petset也好,statefulset也好,都是为啦解决容器的有状态服务。下面就谈谈在用statefulset的时候的一些小疑惑和收获。 浅谈statefulset v...转载 2018-09-09 12:18:08 · 2031 阅读 · 0 评论 -
Kubernetes之YAML文件
YAML是专门用来写配置文件的语言,非常简洁和强大,使用比json更方便。它实质上是一种通用的数据串行化格式。后文会说明定义YAML文件创建Pod和创建Deployment。 YAML语法规则: 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tal键,只允许使用空格 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 ...转载 2018-09-09 13:02:19 · 946 阅读 · 0 评论 -
Kubernetes之Network Policy
概述Kubernetes要求集群中所有pod,无论是节点内还是跨节点,都可以直接通信,或者说所有pod工作在同一跨节点网络,此网络一般是二层虚拟网络,称为pod网络。在安装引导kubernetes时,由选择并安装的network plugin实现。默认情况下,集群中所有pod之间、pod与节点之间可以互通。网络主要解决两个问题,一个是连通性,实体之间能够通过网络互通。另一个是隔离性,出于安...转载 2018-09-09 13:04:40 · 1396 阅读 · 0 评论 -
kubernetes之kube-proxy工作原理和源码分析
本文对kube-proxy做了一些总结说明,对其内部的实现原理进行了研究,并对userspace和iptables两种mode的缺点进行的描述,都通过例子说明了iptable的工作。在下一篇博文中,我将对k8s v1.5中kube-proxy的源码进行分析,有兴趣的同学可以关注。kube-proxy和service背景说到kube-proxy,就不得不提到k8s中service,下面对...转载 2018-09-09 13:11:29 · 1775 阅读 · 0 评论 -
kubernetes之metrics-server安装与配置
一、metrics-server简介从 Kubernetes 1.8 开始,资源使用指标(如容器 CPU 和内存使用率)通过 Metrics API 在 Kubernetes 中获取, metrics-server 替代了heapster。Metrics Server 实现了Resource Metrics API,Metrics Server 是集群范围资源使用数据的聚合器。 Metric...原创 2018-09-24 22:07:28 · 15241 阅读 · 0 评论 -
kubernetes上的服务发现-CoreDNS配置
一、CoreDNS简介Kubernetes包括用于服务发现的DNS服务器Kube-DNS。 该DNS服务器利用SkyDNS的库来为Kubernetes pod和服务提供DNS请求。SkyDNS2的作者,Miek Gieben,创建了一个新的DNS服务器,CoreDNS,它采用更模块化,可扩展的框架构建。 Infoblox已经与Miek合作,将此DNS服务器作为Kube-DNS的替代品。Co...转载 2018-09-09 13:54:04 · 4809 阅读 · 0 评论 -
Kubernetes组件之kube-controller-manager
1. Controller Manager简介Controller Manager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群...转载 2018-09-09 13:32:53 · 14980 阅读 · 2 评论 -
kubernetes之Scheduler
kubernetes Scheduler 简介kubernetes Scheduler 运行在 master 节点,它的核心功能是监听 apiserver 来获取 PodSpec.NodeName 为空的 pod,然后为每个这样的 pod 创建一个 binding 指示 pod 应该调度到哪个节点上。从哪里读取还没有调度的 pod 呢?当然是 apiserver。怎么知道 pod 没有...转载 2018-09-09 13:41:04 · 668 阅读 · 0 评论 -
Kubernetes集群监控Promethues+Grafana
我们选择Prometheus作为监控系统主要在以下各层面实现监控:基础设施层:监控各个主机服务器资源(包括Kubernetes的Node和非Kubernetes的Node),如CPU,内存,网络吞吐和带宽占用,磁盘I/O和磁盘使用等指标。 中间件层:监控独立部署于Kubernetes集群之外的中间件,例如:MySQL、Redis、RabbitMQ、ElasticSearch、Nginx等。...转载 2018-09-10 09:20:29 · 2295 阅读 · 0 评论 -
Kubernetes配置flannel网络
操作环境网络拓扑图 操作步骤配置k8s-master1.在k8s-master节点上创建flannel网络[root@k8s-master yaml]# etcdctl mk /atomic.io/network/config '{"Network": "172.17.0.0/16"}'2.配置flannel [root@k8s-master yaml...转载 2018-09-12 22:00:58 · 1928 阅读 · 0 评论