kubernetes学习笔记1】的更多相关文章

个人笔记,仅本人查阅使用,不保证正确. 零.微服务 微服务架构专注于应用解耦合,通过将应用彻底地组件化和服务化,每个微服务只包含一个非常小的功能,比如权限管理.日志收集等等.由这一组微服务组合起来,提供一个应用的完整功能. 这样的好处是: 开发更方便了.各微服务不再需要关注其他服务内的细节,直接调用 API 就行. 方便持续集成.升级只需要重新部署更新了的微服务,不需要更新整个应用. 方便拓展.遇到性能瓶颈时,只需要拓展瓶颈所在的微服务,不需要拓展整个应用. 当然,这也带来了一些难点: 业务型微…
概述 本文核心问题是:如何升级应用. 对于Pod的更新有两种策略: 一是删除全部旧Pod之后再创建新Pod.好处是,同一时间只会有一个版本的应用存在:缺点是,应用有一段时间不可用. 二是先创建新Pod,再删除旧Pod.可以一次性创建全部,再删除全部,也可以逐渐创建删除.好处是应用一直可用,缺点是要同时支持两个版本. 蓝绿部署 对于应用的版本v1和版本v2: 在运行v1前,流量一直都在v2上 部署v1,然后测试通过后,将流量切换到v2,v2就成为了新的生产环境 一旦v2出现问题,可以在切回v1 金…
服务介绍 服务是一种为一组相同功能的pod提供单一不变接入点的资源.当服务存在时,他的IP和端口不会改变.客户端通过IP和端口建立连接,这些连接会被路由到任何一个pod上.如此,客户端不需要知道每个单独提供服务的pod地址,这些pod也可以随时被创建.删除. 与ReplicationController一样,服务通过标签选择器决定管理哪些pod. 准备镜像 首先要准备一个能够提供web服务的镜像,作者将镜像存储到了阿里云的镜像仓库,读者可以跳过构建过程相关过程,直接使用作者构建好的镜像(但是不建…
前言:笔记知识点来源于Kubernetes官方文档说明,链接:https://kubernetes.io/docs/concepts/overview/components/ ,本记录仅仅是学习笔记记录,也可能存在错误!!! 一个Kubernetes集群是由工作机器集组成,一个工作机器可以称为一个节点node,集群上至少运行一个工作节点.一个节点(node)是运行了容器化应用的机器(实体机或虚拟机).工作节点(node)托管作为应用程序工作的Pods,Pods可以理解是运行一个或多个容器的程序集…
一.关于Kubernetes初学的疑惑 就在这场因"容器"而起的技术变革中,kubernetes项目已经成为容器技术的事实标准,重新定义了基础设置领域对应用编排与管理的种种可能 1.为什么容器里只能跑“一个进程”?2.为什么我原先一直在用的某个 JVM 参数,在容器里就不好使了?3.为什么 Kubernetes 就不能固定 IP 地址?容器网络连不通又该如何取Debug?4.Kubernetes 中 StatefulSet 和 Operator 到底什么区别?PV 和 PVC 这些概念…
文章目录 (1)创建app (2)创建app的docker镜像 (3)部署app到k8s (4)参考资料 前面一篇文章部署好了minikube环境,这次学习下怎么部署app到kubernetes环境当中去.参考的是官网的教程,稍微做了一点改动,为了进一步熟悉go和docker,这里我把教程中的js换成了go,其他学习的朋友可以改成Python,java等其他语言,进行学习. (1)创建app 这里写了一个简单的hello kubernetes的简单server.go. package main…
想学习一下kubernetes,于是先安装一个单机版来学习一下.但是就是这个最简单的单机版安装方式都倒腾了我好久,记录下自己的安装过程.博主是在windows利用vmware workstation安装的linu虚拟机,虚拟机系统是centos7.4 1.安装虚拟机系统centos7.4 一开始一直用7.2的一直不行楼主安装是7.2的系统,但是一直报错:Unable to update cni config: No networks found in /etc/cni/net.d 后续搜索了很久…
前言 前面用到过的 minikube 只是一个单节点的 k8s 集群,这对于学习而言是不够的.我们需要有一个多节点集群,才能用到各种调度/监控功能.而且单节点只能是一个加引号的"集群". kubernetes 安装方式面面观 kubernetes 是一个组件化的系统,安装过程有很大的灵活性,很多组件都有多种实现,这些实现各有特点,让初学者眼花缭乱. 而且要把这些组件一个个安装配置好并且能协同工作,也是很不容易的. 因此社区出现了各种各样的安装方案.安装方案如此之多,以致于我不晓得该用哪…
介绍 https://minikube.sigs.k8s.io/docs/ Minikube 用于快速在本地搭建 Kubernetes 单节点集群环境,它对硬件资源没有太高的要求,方便开发人员学习试用,或者进行日常的开发. 其支持大部分kubernetes的功能,列表如下 DNS NodePorts ConfigMaps and Secrets Dashboards Container Runtime: Docker, and rkt Enabling CNI (Container Networ…
目录 不同类型的IP Pod IP Cluster IP 不同类型的Port port nodePort TargetPort containerPort hostPort Endpoint Endpoint Controller 定义 Endpoint 使用Endpoint引用外部服务 创建ExternalName类型的服务 当新手刚学习k8s时候,会被各种的IP 和port 搞晕,其实它们都与k8s service的访问有密切关系,梳理它们之间的差异可以更好了解k8s的服务访问机制. 不同类…
https://www.bilibili.com/video/BV1w4411y7Go?p=1 一.K8s介绍 k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈. 1.1 发展经历 基础设施级服务 iaas :阿里云 平台设施级服务 paas :新浪云 软件设施级服务 saas :Office365 资源管理器: 前生: Apache:MESOS - 分布式系统内核 .分布式资源管…
前言:本笔记仅记录学习记录,可能存在错误!!!使用的环境是Ubuntu Desktop 20.04,也有用Windows 10 操作的,根据的文档是minikube的文档教程,链接:https://minikube.sigs.k8s.io/docs/start/ ,使用此文档教程之前请确保已经安装了容器引擎,如Docker,并且要确保CPU核心数是双核及以上,不然会报错"the number of available CPUs 1 is less than the required 2"…
docker实现了更便捷的单机容器虚拟化的管理, docker的位置处于操作系统层与应用层之间; 相对传统虚拟化(KVM,XEN): docker可以更加灵活的去实现一些应用层功能, 同时对资源的利用率也更高 相对应用: docker可以把应用更操作系统(镜像)做更好的结合, 降低部署与维护的的成本 处于这样一个位置在单机使用docker进行业务部署是可以感觉到质的提升; 但是针对跨机器, 大规模, 需要对业务质量进行保证的时候, docker本身又有些不足, 而传统的运维自动化工具无论是在do…
安装篇 Downloading Kubernetes You can either build a release from sources or download a pre-built release. If you do not plan on developing Kubernetes itself, we suggest a pre-built release. Prebuilt Binary Release Building from source Download Kubernet…
01 初出茅庐 1.PaaS 项目被大家接纳的一个主要原因? 就是它提供了一种名叫"应用托管". 2.像 Cloud Foundry 这样的 PaaS 项目,最核心的组件是? 一套应用的打包和分发机制 3.Docker 镜像解决的? 恰恰就是打包这个根本性的问题 4. Docker 镜像的精髓? 你完全不需要进行任何配置或者修改,因为这个压缩包赋予了你一种极其宝贵的能力:本地环境和云端环境高度一致!这,正是 Docker 镜像的精髓. docker项目给PaaS世界带来的"降…
1.Helm的简介 Helm是Kubernetes的一个包管理工具,用来简化Kubernetes应用的部署和管理.可以把Helm比作CentOS的yum工具. Helm有如下几个基本概念: Chart: 是Helm管理的安装包,里面包含需要部署的安装包资源.可以把Chart比作CentOS yum使用的rpm文件.每个Chart包含下面两部分: 1.包的基本描述文件Chart.yaml 2.放在templates目录中的一个或多个Kubernetes manifest文件模板 Release:是…
一..安装calico [root@k8s-master01 ~]# kubectl apply -f https://docs.projectcalico.org/v3.3/getting-started/kubernetes/installation/hosted/canal/rbac.yaml clusterrole.rbac.authorization.k8s.io "calico" created clusterrole.rbac.authorization.k8s.io &…
第一章.前言 以前是用heapster来收集资源指标才能看,现在heapster要废弃了从1.8以后引入了资源api指标监视 资源指标:metrics-server(核心指标) 自定义指标:prometheus,k8s-prometheus-adapter(将Prometheus采集的数据转换为指标格式)     k8s的中的prometheus需要k8s-prometheus-adapter转换一下才可以使用 新一代架构:     核心指标流水线:         kubelet,metric…
第一章.部署dashboard 作为Kubernetes的Web用户界面,用户可以通过Dashboard在Kubernetes集群中部署容器化的应用,对应用进行问题处理和管理,并对集群本身进行管理.通过Dashboard,用户可以查看集群中应用的运行情况,同时也能够基于Dashboard创建或修改部署.任务.服务等Kubernetes的资源.通过部署向导,用户能够对部署进行扩缩容,进行滚动更新.重启Pod和部署新应用. 项目地址:https://github.com/kubernetes/das…
第一章.RBAC介绍 在Kubernetes中,授权有ABAC(基于属性的访问控制).RBAC(基于角色的访问控制).Webhook.Node.AlwaysDeny(一直拒绝)和AlwaysAllow(一直允许)这6种模式.从1.6版本起,Kubernetes 默认启用RBAC访问控制策略.从1.8开始,RBAC已作为稳定的功能.通过设置–authorization-mode=RBAC,启用RABC.在RABC API中,通过如下的步骤进行授权:)定义角色:在定义角色时会指定此角色对于资源的访问…
一.Ingress 简介 在Kubernetes中,服务和Pod的IP地址仅可以在集群网络内部使用,对于集群外的应用是不可见的.为了使外部的应用能够访问集群内的服务,在Kubernetes 目前 提供了以下几种方案: NodePort LoadBalancer Ingress Ingress 组成 ingress controller 将新加入的Ingress转化成Nginx的配置文件并使之生效 ingress服务 将Nginx的配置抽象成一个Ingress对象,每添加一个新的服务只需写一个新的…
文章目录 (一)安装前准备 (二)master安装 1.安装组件 2.排错 (三)node安装 1.安装组件 2.加入master 3.排错 (四)网络安装 (五)dashboard安装 (一)安装前准备 由于我是在笔记本虚拟机中安装,笔记本性能有限,所以这里就只安装一个node和一个master.准备工作如下,部署好两个虚拟机,都安装好centos7.4系统和docker. – ip docker 系统 master 192.168.226.140 1.13.1 centos7.4 node…
pod与容器 一个pod是一组紧密相关的容器,它们总是一起运行在同一个节点上,以及同一个LInux命名空间中. 每个pod拥有自己的ip,包含若干个容器.pod分布在不同的节点上. 为什么需要pod 为什么需要pod,而不是直接使用容器: 因为容器被设计为只运行一个进程,由于不能够将多个进程聚集在一个单独的容器中,就需要另一种结构将容器绑定在一起,并将它们作为一个单元管理,这就是pod的根本原理. pod中容器的隔离共享 在同一个pod中,多个容器有些资源是共享的,有些是隔离的. 同一个pod中…
存活探针 Kubernetes可以通过存活探针(liveness probe)检查容器是否存活.如果探测失败,Kubernetes将定期执行探针并重新启动容器. 官方文档请见:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ 存活探针分为三种: exec:在容器内执行任意命令,并检查命令的退出状态码,为0则成功,否则失败. httpGet:执行…
简介 卷是Pod的一部分,与Pod共享生命周期.它不是独立的Kubernetes对象,因此不能单独创建. 卷提供的存储功能不但可以解决容器重启后数据丢失的问题,还可以使数据在容器间共享. 一些卷的类型: emptyDir:用于存储临时数据的空目录 hostPath:用于将目录从工作节点挂载到pod gitRepo:通过检出Git仓库的内容来初始化的卷 nfs:挂载到pod中的nfs共享卷 configMap.secret.downwardAPI:用于将Kubernetes部分资源和集群信息公开给…
概述 本文的核心是:如何处理应用程序的数据配置. 配置应用程序可以使用以下几种途径: 向容器传递命令行参数 为每个容器配置环境变量 通过特殊的卷将配置文件挂载到容器中 向容器传递命令行参数 在Kubernetes中定义容器时,镜像的ENTRYPOINT和CMD都可以被覆盖(但是在Docker中,镜像的ENTRYPOINT是不能覆盖的).仅需在容器定义中设置command和args的值. 构建一个镜像 loopechodate.sh:接收一个时间间隔的参数,追加输出当前时间到 /tmp/a.txt…
Downward API 我们已经了解到,使用ConfigMap和Secret向应用传递配置数据,这对于运行前预设的数据是可行的.但是对于那些不能预先知道的,就需要使用Downward API. Downward API允许我们通过环境变量或者卷的方式向应用传递元数据.可传递的数据包括:Pod的IP.名称.标签.注解.所在命令空间.运行的节点名称.运行所属的ServiceAccountName,每个容器请求的CPU和内存使用量以及限制. 通过环境变量暴露元数据 env.valueFrom下引用P…
StatefulSet如何提供稳定的网络标识和状态 ReplicaSet中的Pod都是无状态,可随意替代的.又因为ReplicaSet中的Pod是根据模板生成的多副本,无法对每个副本都指定单独的PVC. 来看一下StatefulSet如何解决的. 提供稳定的网络标识 StatefulSet创建Pod都有一个从零开始的顺序索引,这会体现在Pod的名称和主机名上,同样也会体现在Pod对应的固定存储上.所以这些名字是可预先知道的,不同于ReplicaSet的随机生成名字. 因为他们的名字都是固定的,而…
目录 K8S 组件构成 环境准备 (以ubuntu系统为例) 1. kubernetes集群机器 2. 安装 docker. kubeadm.kubelet.kubectl 2.1 在每台机器上安装 docker 2.2 每台机器上安装 kubelet .kubeadm .kubectl 创建 kubernetes 集群 kubeadm 在 master 节点 init 集群 在worker 节点执行命令 join 到集群 安装 Pod Network (在 master 节点 flannel/…
首先吐槽下国内这些论坛的技术精神,不是我崇洋媚外,有些复读机烦不烦啊,别人的东西吃进去吐出来好玩么? 还有一些不懂装懂,这种最可恶,明明自己都不明白自己在写什么,还是往精华区发,简直离谱,知道自己多挣的积分会给新手带来多大的负担么? 这几天的感觉下来,kubernetes感觉并不算是很难的东西,只是因为缺少一个系统性的教程,某些培训班的教程也早已跟不上时代的步伐了,另外技术共享也不能说尽如人意,所以造成了较高的行业壁垒. 所以我就来整理一下吧,如果能帮上后来人的话,那将是莫大的欣慰 首先我们先看…