kubernetes 项目】的更多相关文章

Kubernetes项目简介 Kubernetes 是 Google 团队发起的开源项目,它的目标是管理跨多个主机的容器,提供基本的部署,维护以及运用伸缩,主要实现语言为 Go 语言.Kubernetes 是: 易学:轻量级,简单,容易理解 便携:支持公有云,私有云,混合云,以及多种云平台 可拓展:模块化,可插拔,支持钩子,可任意组合 自修复:自动重调度,自动重启,自动复制 Kubernetes 构建于 Google 数十年经验,一大半来源于 Google 生产环境规模的经验.结合了社区最佳的想…
Kubernetes 是 Google 团队发起并维护的基于Docker的开源容器集群管理系统,它不仅支持常见的云平台,而且支持内部数据中心. 建于Docker之上的Kubernetes可以构建一个容器的调度服务,其目的是让用户透过Kubernetes集群来进行云端容器集群的管理,而无需用户进行复杂的设置工作.系统会自动选取合适的工作节点来执行具体的容器集群调度处理工作.其核心概念是Container Pod(容器仓).一个Pod是有一组工作于同一物理工作节点的容器构成的.这些组容器拥有相同的网…
GitlabCI实践 GitLabCI/CD基础概念 为什么要做CI/CD? GitLab CI/CD简介 GitLabCI VS Jenkins 安装部署GitLab服务 GitLabRunner实践 GitlabRunner简介 GitLabRunner安装 GitLabRunner注册 GitLabRunner命令 运行测试流水线任务 GitLabPipeline语法 pipeline syntax 1 pipeline syntax 2 pipeline syntax 3 pipelin…
1:CI/CD Docker: Harbor Git Jenkins 2:微服务 istio…
今天在jenkins中创建kubernetes的rc时,检查目标yaml文件时报出如下错误: + /opt/jenkins/kube/kubectl -s http://10.xx.xx.xx:8080 create -f ./WebSituationAnalysis2.0/src/WebSituationAnalysis/rc.yaml error validating "./WebSituationAnalysis2.0/src/WebSituationAnalysis/rc.yaml&qu…
什么是Kubernetes Kubernetes(k8s)是一款开源的以容器为中心的,用于跨主机集群自动部署(automating deployment),控制容器扩展/收缩(scaling)和管理容器化应用程序(management of containerized applications)的基础平台. Kubernetes项目由Google于2014年启动,建立在Google 十五年的大规模生产环境管理经验之上,再结合社区中的最好想法进行实践. 规模庞大(Planet Scale):k8s…
1.前言 Kubernetes 很火,一大批互联网公司早已领先一步,搭建起专有的 PaaS平台,传统企业们看到的 Kubernetes的趋势,亦不甘落后,在试水的道上一路狂奔-- 虽然,Kubernetes很火,并不代表可以"上手即用",基于 Kubernetes的容器编排也不是简单的"拿来主义".在容器圈,除了Kubernetes,还存在着 Mesos.Swarm等分属不同阵营的容器集群管理工具,以及基于这些工具的多个容器云提供商. 腾讯云在 2016年底决定开发…
目录 1.目录 1.1.什么是 Kubernetes? 1.2.Kubernetes 有哪些优势? 2.环境准备 2.1.网络配置 2.2.更改 HOSTNAME 2.3.配置ssh免密码登录登录 2.4.关闭防火墙 2.5.关闭交换分区 2.6.关闭 SeLinux 2.7.安装 NTP 2.8.安装及配置 CFSSL 2.9.创建安装目录 2.10.升级内核 3.安装 Docker 18.06.1-ce 3.1.删除旧版本的 Docker 3.2.设置存储库 3.3.安装 Docker 3.…
kubernetes网络通信 容器间的通信   pod内的容器通信(lo) Pod之间的通信   pod IP <-----> pod IP Pod与Service之间的通信 podIP <-----> ClusterIP Service与集群外部的通信 ClusterIP <-----> 集群外部 CNI插件: flannel calico canel kube-route 解决方案: 虚拟网桥 多路复用  MacVLAN 硬件交换  SR-IOV Flannel F…
在开始这篇文章之前,首先要明确一点: Kubernetes 中对容器日志的处理方式,都叫做 cluster-level-logging ,也就是说,这个日志处理系统,与容器, Pod 以及 Node 的生命周期都是完全无关的.其实想想也能知道,这种设计就是为了保证,无论是容器宕了, Pod 被删除甚至是节点宕机的时候,日志处理系统仍然可以被正常获取到,从而可以分析原因所在. 而对于一个容器来说,当应用把日志输出到 stdout 和 stderr 之后,容器项目在默认情况下,就会把这些日志输出到宿…
在 Kubernetes 中, Service 有三种对外暴露的方法,但是由于每个 Service 都要有一个负载均衡的服务,所以采用 Service 的话,会造成既浪费成本又高的现象.对于用户来说,我更希望的是,能有一个全局的负载均衡器,然后我只需要通过访问 URL 就可以把请求转发给不同的后端 Service ,从而可以访问到界面.而不是每个 Service 都需要负载均衡. 而这,就引出了 Ingress :它就是全局的,为了代理不同后端 Service 而设置的负载均衡服务. 来说个例子…
Kubernetes中有很多种内置的编排对象,此外还可以自定义API资源类型和控制器的编写方式.那么,我能不能自己写一个编排对象呢?答案是肯定的.而这,也正是Kubernetes项目最具吸引力的地方. 毕竟在互联网级别的大规模集群里,Kubernetes内置的编排对象,很难做到完全满足所有需求,所以很多实际的容器化工作,都会要求设计一个自己的编排对象,实现自己的控制器模式. 所以,我们可以基于插件机制来完成这些工作,而不需要修改任何一行代码.但是,如果要通过外部插件,在Kubernetes中实现…
前面我写的一系列博客,如果你能够耐心看到这一篇,那你应该对一个概念就不是太陌生了:Deployment. 为什么提这个概念呢,这就要说到Deployment的一个不足了.Deployment不足以覆盖所有的应用编排问题,因为在它看来,一个应用的所有Pod,是完全一样的,所以它们之间就没有顺序,也无所谓运行在哪台宿主机上.需要时,Deployment就通过Pod模板创建新的Pod,不需要时,就"杀掉"任意一个Pod. 但是在实际场景中,并不是所有应用都满足这样的要求.比如:主从关系,主备…
而在这篇文章中,我们就来扮演一个应用开发者的角色,使用这个 Kubernetes 集群发布第一个容器化应用. 在开始实践之前,我先给你讲解一下 Kubernetes 里面与开发者关系最密切的几个概念. 作为一个应用开发者,你首先要做的,是制作容器的镜像.而有了容器镜像之后,你需要按照+Kubernetes+项目的规范和要求,将你的镜像组织为它能够“认识”的方式,然后提交上去. 那么,什么才是 Kubernetes 项目能“认识”的方式呢? 这就是使用 Kubernetes 的必备技能:编写配置文…
本博客搭建k8s集群1.12.2版本 1. 准备2台以上最低2核4G的服务器 2. 关闭机器的防火墙 12 systemctl disable firewalldsystemctl stop firewalld 生产环境下建议不要关闭防火墙,只开放k8s所用的端口 3. 配置docker和k8s仓库为阿里云镜像仓库 首先选择一台性能比较好的机器作为主节点 1 wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/do…
我要写什么 <看懂每一行代码 - kubernetes>会包含k8s整个项目的源码解析,考虑到门槛问题,在开始分析k8s之前我会通过一些更低难度的golang开源项目讲解来帮助大家提升golang编码技能:然后通过与k8s相关的一些项目的讲解,打通阻碍k8s学习的一些大障碍:最后集中火力,将kubernetes项目的整个源码吃透. 总体来说,本系列计划分三步走完成源码层面掌握k8s的目标: golang技能提升 k8s依赖技术 k8s核心组件 目前关于k8s应用的教程已经很多了,其中不乏相当优…
前言 当前Kubernetes(K8S)已经成为事实上的容器编排标准,大家关注的重点也不再是最新发布的功能.稳定性提升等,正如Kubernetes项目创始人和维护者谈到,Kubernetes已经不再是buzzword,当我们谈起它的时候,变得越发的boring,它作为成熟项目已经走向了IT基础设施的中台,为适应更大规模的生产环境和更多场景的应用不断延展迭代. 而现在我们更加专注于如何利用K8S平台进行CICD.发布管理.监控.日志管理.安全.审计等等.本期我们将介绍如何利用K8S中的Audit事…
本文收录在容器技术学习系列文章总目录 一.简介 1.Kubernetes代码托管在GitHub上:https://github.com/kubernetes/kubernetes/. 2.Kubernetes是一个开源的,容器集群管理系统,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制.通过Kubernetes你可以: 快速部署应用 快速扩展应用 无缝对接新的应用功能 节省资源,优化硬件资源的使用 3…
在前面的四篇文章中,我以 Docker 项目为例,一步步剖析了 Linux 容器的具体实现方式.通过这 些讲解你应该能够明白:一个“容器”,实际上是一个由 Linux Namespace.Linux Cgroups 和 rootfs 三种技术构建出来的进程的隔离环境. 从这个结构中我们不难看出,一个正在运行的 Linux 容器,其实可以被“一分为二”地看待: 1. 一组联合挂载在 /var/lib/docker/aufs/mnt 上的 rootfs,这一部分我们称为“容器镜 像”(Contain…
要真正发挥容器技术的实力,你就不能仅仅局限于对 Linux 容器本身的钻研和使用. 这些知识更适合作为你的技术储备,以便在需要的时候可以帮你更快的定位问题,并解决问题. 而更深入的学习容器技术的关键在于,如何使用这些技术来“容器化”你的应用. 比如,我们的应用既可能是 Java Web 和 MySQL 这样的组合,也可能是 Cassandra 这样的分布式 系统.而要使用容器把后者运行起来,你单单通过 Docker 把一个 Cassandra 镜像跑起来是没用 的. 要把 Cassandra 应…
准备工作 首先,准备机器.最直接的办法,自然是到公有云上申请几个虚拟机.当然,如果条件允许的话,拿几台本地的物理服务器来组集群是最好不过了.这些机器只要满足如下几个条件即可: 满足安装 Docker 项目所需的要求,比如 64 位的 Linux 操作系统.3.10 及以上的内核版本: x86+或者+ARM+架构均可: 机器之间网络互通,这是将来容器之间网络互通的前提: 有外网访问权限(***),因为需要拉取镜像: 能够访问到gcr.io.quay.io这两个 docker registry,因为…
不过,我相信你在学习和使用 Kubernetes 项目的过程中,已经不止一次地想要问这样一个问题:为什么我们会需要 Pod? 是啊,我们在前面已经花了很多精力去解读 Linux 容器的原理.分析了 Docker 容器的本质,终于,“Namespace 做隔离,Cgroups 做限制,rootfs 做文件系统”这样的“三句箴言”可以朗朗上口了,为什么 Kubernetes 项目又突然搞出一个 Pod 来呢? 要回答这个问题,我们还是要一起回忆一下我曾经反复强调的一个问题:容器的本质到底是什么? 你…
在上一篇文章中,我详细介绍了 Pod 这个 Kubernetes 项目中最重要的概念. 现在,你已经非常清楚:Pod,而不是容器,才是 Kubernetes 项目中的最小编排单位.将这个设计落实到 API 对象上,容器(Container)就成了 Pod 属性里的一个普通的字段.那么,一个很自然的问题就是:到底哪些属性属于 Pod 对象,而又有哪些属性属于 Container 呢? 要彻底理解这个问题,你就一定要牢记我在上一篇文章中提到的一个结论:Pod 扮演的是传统部署环境里“虚拟机”的角色.…
作为 Kubernetes 项目里最核心的编排对象,Pod 携带的信息非常丰富.其中,资源定义(比如 CPU.内存等),以及调度相关的字段.在本篇,我们就先从一种特殊的 Volume 开始,来帮助你更加深入地理解 Pod 对象各个重要字段的含义. 这种特殊的 Volume,叫作 Projected Volume,你可以把它翻译为“投射数据卷”. (备注:Projected Volume 是 Kubernetes v1.11 之后的新特性) 这是什么意思呢? 在 Kubernetes 中,有几种特…
Pod 这个看似复杂的 API 对象,实际上就是对容器的进一步抽象和封装而已. 说得更形象些,“容器”镜像虽然好用,但是容器这样一个“沙盒”的概念,对于描述应用来说, 还是太过简单了. 这就好比,集装箱固然好用,但是如果它四面都光秃秃的,吊车还怎么把这个集 装箱吊起来并摆放好呢? 所以,Pod 对象,其实就是容器的升级版.它对容器进行了组合,添加了更多的属性和字段.这就 好比给集装箱四面安装了吊环,使得 Kubernetes 这架“吊车”,可以更轻松地操作它. 而 Kubernetes 操作这些…
Deployment 看似简单,但实际上,它实现了 Kubernetes 项目中一个非常重要的功能:Pod 的“水平扩展 / 收缩”(horizontal scaling out/in). 这个功能,是从 PaaS 时代开始,一个平台 级项目就必须具备的编排能力. 举个例子,如果你更新了 Deployment 的 Pod 模板(比如,修改了容器的镜像),那么 Deployment 就需要遵循一种叫作“滚动更新”(rolling update)的方式,来升级现有的容器. 而这个能力的实现,依赖的是…
有一类作业显然不满足这样的条件,这就是“离线业务”,或者叫作 Batch Job(计算业务). 这 种业务在计算完成后就直接退出了,而此时如果你依然用 Deployment 来管理这种业务的话,就会 发现 Pod 会在计算结束后退出,然后被 Deployment Controller 不断地重启:而像“滚动更 新”这样的编排功能,更无从谈起了. 所以,早在 Borg 项目中,Google 就已经对作业进行了分类处理,提出了 LRS(Long Running Service)和 Batch Job…
一.关于Kubernetes初学的疑惑 就在这场因"容器"而起的技术变革中,kubernetes项目已经成为容器技术的事实标准,重新定义了基础设置领域对应用编排与管理的种种可能 1.为什么容器里只能跑“一个进程”?2.为什么我原先一直在用的某个 JVM 参数,在容器里就不好使了?3.为什么 Kubernetes 就不能固定 IP 地址?容器网络连不通又该如何取Debug?4.Kubernetes 中 StatefulSet 和 Operator 到底什么区别?PV 和 PVC 这些概念…
01 初出茅庐 1.PaaS 项目被大家接纳的一个主要原因? 就是它提供了一种名叫"应用托管". 2.像 Cloud Foundry 这样的 PaaS 项目,最核心的组件是? 一套应用的打包和分发机制 3.Docker 镜像解决的? 恰恰就是打包这个根本性的问题 4. Docker 镜像的精髓? 你完全不需要进行任何配置或者修改,因为这个压缩包赋予了你一种极其宝贵的能力:本地环境和云端环境高度一致!这,正是 Docker 镜像的精髓. docker项目给PaaS世界带来的"降…
什么是编排 Kubernetes中,我们总是在说一个概念:编排. 在[Kubernetes]谈谈Kubernetes的本质这篇文章中,关于"编排"的概念介绍了一下:过去很多集群管理项目所擅长的都是把一个容器,按照某种规则,放置在某个最佳节点上运行起来,这种功能我们称为"调度".但Kubernetes项目所擅长的,是按照用户的意愿和整个系统的规则,完全自动化处理好容器之间的各种关系,这种功能,叫做编排. 这篇文章就尝试来讲一下,编排. 编排是如何实现的 不知道你对ku…