Kubernetes CI/CD(2)】的更多相关文章

本章节通过在Jenkins创建一个kubernetes云环境,动态的在kubernetes集群中创建pod完成pipeline的构建流程,关于直接在宿主机上搭建Jenkins集群的可参照Kubernetes CI/CD(1) 部署Jenkins 下载Jenkins对应的镜像 docker pull jenkins/jenkins:2.221 将jenkins镜像上传到自己的私有镜像仓库中 docker tag jenkins/jenkins:2.221 192.168.0.107/k8s/jen…
本文通过在kubernetes上启动Jenkins服务,并将宿主机上的docker.docker.sock挂载到Jenkins容器中,实现在Jenkins容器中直接打镜像的形式实现CI功能. Kubernetes 集群的安装请参考kubernetes安装 部署Jenkins 下载Jenkins对应的镜像 docker pull jenkins/jenkins:2.221 将jenkins镜像上传到自己的私有镜像仓库中 docker tag jenkins/jenkins:2.221 192.16…
ETCD集群部署 所有持久化的状态信息以KV的形式存储在ETCD中.类似zookeeper,提供分布式协调服务.之所以说kubenetes各个组件是无状态的,就是因为其中把数据都存放在ETCD中.由于ETCD支持集群,这里在三台主机上都部署上ETCD. (1)准备etcd软件包 wget https://github.com/coreos/etcd/releases/download/v3.2.18/etcd-v3.2.18-linux-amd64.tar.gz [root@linux-node…
一.Kubernetes常用资源 以下列举的内容都是 kubernetes 中的 Object,这些对象都可以在 yaml 文件中作为一种 API 类型来配置. 类别 名称 工作负载型资源对象 Pod  Replicaset  ReplicationController  Deployments StatefulSets Daemonset Job CronJob 服务发现及负载均衡  Service  Ingress 配置与存储 Volume.Persistent Volume.CSl . c…
Kubernetes 部署Web UI (Dashboard) 项目下载地址:https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dashboard 相关文件说明 # UI存放的配置信息 dashboard-configmap.yaml # UI的控制器 dashboard-controller.yaml # 授权文件 dashboard-rbac.yaml # 存放铭感数据信息 dashboard-secret…
该文延续上篇文章: CI框架浅析(一) 在CI框架的核心库中,CodeIgniter.php负责加载所有需要的类库,第一个加载的是公共库 core/Common.php Common.php 负责加载以下公共方法: 方法名 注释 is_php($version) 判断$version是否小于或等于当前安装的PHP版本 is_really_writable($file) 判断该文件是否可写 load_class($class, $directory = 'libraries', $param =…
kubernetes集群搭建(1):环境准备 中各节点已经安装好了docker,请确认docker已启动并正常运行 1.通过命令启动私库 docker run -d -p 5000:5000 --privileged=true -v /data/history:/data/registry registry 2.确认启动成功 [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ce…
一.问题 首先,我们思考这样一个问题: 访问k8s集群中的pod, 客户端需要知道pod地址,需要感知pod的状态.那如何获取各个pod的地址?若某一node上的pod故障,客户端如何感知? 二.k8s service 什么是service 是发现后端pod服务: 是为一组具有相同功能的容器应用提供一个统一的入口地址: 是将请求进行负载分发到后端的各个容器应用上的控制器. 对service的访问来源 访问service的请求来源有两种:k8s集群内部的程序(Pod)和 k8s集群外部的程序. s…
欢迎访问网易云社区,了解更多网易技术产品运营经验. 五.K8s 1.8 新特性--ipvs ipvs与iptables的性能差异 随着服务的数量增长,IPTables 规则则会成倍增长,这样带来的问题是路由延迟带来的服务访问延迟,同时添加或删除一条规则也有较大延迟.不同规模下,kube-proxy添加一条规则所需时间如下所示: 可以看出当集群中服务数量达到5千个时,路由延迟成倍增加.添加 IPTables 规则的延迟,有多种产生的原因,如: 添加规则不是增量的,而是先把当前所有规则都拷贝出来,再…
1.Kubernetes的重要概念 转自:CloudMan老师公众号<每天5分钟玩转Kubernetes>https://item.jd.com/26225745440.html Cluster  Cluster 是计算.存储和网络资源的集合,Kubernetes 利用这些资源运行各种基于容器的应用. Master  Master 是 Cluster 的大脑,它的主要职责是调度,即决定将应用放在哪里运行.Master 运行 Linux 操作系统,可以是物理机或者虚拟机.为了实现高可用,可以运行…
K8S Mater节点部署 1.部署Kubernetes API服务部署 apiserver提供集群管理的REST API接口,包括认证授权.数据校验以及集群状态变更等. 只有API Server才能直接操作etcd: 其他模块通过API Server查询或修改数据 提供其他模块之间的数据交互和通信枢纽 (1)准备软件包 [root@linux-node1 ~]# cd /usr/local/src/kubernetes [root@linux-node1 kubernetes]# cp ser…
K8S Node节点部署 1.部署kubelet (1)二进制包准备 [root@linux-node1 ~]# cd /usr/local/src/kubernetes/server/bin/ [root@linux-node1 bin]# cp kubelet kube-proxy /opt/kubernetes/bin/ [root@linux-node1 bin]# scp kubelet kube-proxy 192.168.56.120:/opt/kubernetes/bin/ [r…
一.K8S的ip地址 Node IP:节点设备的IP,如物理机,虚拟机等容器宿主的实际IP. Pod IP:Pod的IP地址,是根据docker0网络IP段进行分配的. Cluster IP:Service的IP,是一个虚拟IP,仅作用于service对象,由K8S管理和分配,需要结合service port才能使用,单独的IP没有通信功能,集群外访问需要一些修改. 在K8S集群内部,node ip.pod ip.clustere ip的通信机制是由k8s指定的路由规则,不是IP路由. [roo…
一.环境说明 节点名称 ip地址 部署说明 Pod 网段 Service网段 系统说明 k8s-master 192.168.56.11 docker.kubeadm.kubectl.kubelet 10.244.0.0/16 10.96.0.0/12 Centos 7.4 k8s-node01 192.168.56.12 docker.kubeadm.kubelet 10.244.0.0/16 10.96.0.0/12 Centos 7.4 k8s-node02 192.168.56.13 d…
目录 一.statefulset简介 二.为什么要有headless?? 三.为什么要 有volumeClainTemplate?? 四.statefulSet使用演示 (1)查看statefulset的定义 (2)清单定义StatefulSet (3)删除前期的操作 (4)修改pv的大小为2Gi (5)创建statefulset 五.滚动更新.扩展伸缩.版本升级.修改更新策略 1.滚动更新 2.扩展伸缩 3.更新策略和版本升级 一.statefulset简介     从前面的学习我们知道使用D…
一.Lifecycle 官网:https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/ 通过前面的分享,关于pod是什么相信看过前面的文章的朋友已经很清楚了,有开发经验的朋友很清楚,对象的创建是具有生命周期的,对于Pod也一样,他也有它的生命周期,接下来就是分享pod的创建.销毁.以及他的状态是什么:简单的来说,就是分享pod的生命周期. 下图是官网对Pod生命周期阶段的描述 通过官网可以发现有一个Running状态,相信…
kubernetes集群搭建(kubeadm方式) kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具.这个工具能通过两条指令完成一个kubernetes集群的部署: # 创建一个 Master 节点 kubeadm init # 将一个 Node 节点加入到当前集群中 kubeadm join <Master节点的IP和端口 > 安装要求 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或…
一.pod 二.Volume volume可以为容器提供持久化存储,比如 三.私有镜像 在使用私有镜像时,需要创建一个docker registry secret,并在容器中引用.创建docker registry secret: 四.RestartPoliy 支持三种RestartPolicy Always:只要退出就重启 OnFailure:失败退出(exit code不等于0)时重启 Never:只要退出就不再重启 注意,这里的重启是指在Pod所在Node上面本地重启,并不会调度到其他No…
一.使用 kubectl run 创建 pod(容器) 命令 kubectl run类似于 docker run,可以方便的创建一个容器(实际上创建的是一个由deployment来管理的Pod): 等到容器变成Running后,就可以用 kubectl 命令来操作它了,比如 kubectl get - 类似于 docker ps ,查询资源列表 kubectl describe - 类似于 docker inspect ,获取资源的详细信息 kubectl logs - 类似于 docker l…
一.ReplicationController/ReplicaSet 在Kubernetes集群中,ReplicationController能够确保在任意时刻,指定数量的Pod副本正在运行.如果Pod副本的数量过多,则ReplicationController会Kill掉部分使其数量与预期保持一致,如果Pod数量过少,则会自动创建新的Pod副本以与预期数量相同.下面是一个ReplicationController的配置示例,如下所示: ReplicaSet是ReplicationControl…
一.Deployment的概念 K8S本身并不提供网络的功能,所以需要借助第三方网络插件进行部署K8S中的网络,以打通各个节点中容器的互通. POD,是K8S中的一个逻辑概念,K8S管理的是POD,一个POD中包含多个容器,容器之间通过localhost互通.而POD需要ip地址.每个POD都有一个标签 POD–>RC–>RS–>Deployment (发展历程) Deployment,表示用户对K8S集群的一次更新操作.Deployment是一个比RS应用模式更广的API对象.用于保证…
一.CoreDNS部署 在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问. (1)编辑coredns.yaml文件 [root@linux-node1 ~]# vim coredns.yaml apiVersion: v1 kind: ServiceAccount metadata: name: coredns namespace: kube-system labels: kubernetes.io/clus…
1.使用命令kubectl run创建应用 语法: kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]  实用举例: [root@k8s-master ~]# kubectl run ngin…
一.什么是Pod? Pod是kubernetes中你可以创建和部署的最小也是最简的单位.一个Pod代表着集群中运行的一个进程. Pod中封装着应用的容器(有的情况下是好几个容器),存储.独立的网络IP,管理容器如何运行的策略选项.Pod代表着部署的一个单位:kubernetes中应用的一个实例,可能由一个或者多个容器组合在一起共享资源. 在Kubrenetes集群中Pod有如下两种使用方式: 一个Pod中运行一个容器.“每个Pod中一个容器”的模式是最常见的用法:在这种使用方式中,你可以把Pod…
一.什么是DaemonSet? DaemonSet 确保全部(或者一些)Node 上运行一个 Pod 的副本.当有 Node 加入集群时,也会为他们新增一个 Pod .当有 Node 从集群移除时,这些 Pod 也会被回收.删除 DaemonSet 将会删除它创建的所有 Pod. 使用 DaemonSet 的一些典型用法: 运行集群存储 daemon,例如在每个 Node 上运行 glusterd.ceph. 在每个 Node 上运行日志收集 daemon,例如fluentd.logstash.…
        CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为开发者们建立功能完善的 Web 应用程序.本人使用CI框架有一段时间了,现在决定把该框架源码剖析一遍,理解其构架的用意与精妙之处.分析完所有的源码后,我才来总结CI框架的优缺点,以及适用于哪些场景开发. 目前CI最新的版本是 3.1.4, 4.0版本也即将发布.我们先分析3.1.4版本,然后再看看4.0有哪些重大突破. 首先是查看根目录下index.php文件了,主要定义了几个常…
本文结构 ASP.NET Core应用程序的构建 ASP.NET Core应用程序容器化所需注意的问题 应用程序的配置信息 端口侦听 ASP.NET Core的容器版本 docker镜像构建上下文(Build Context)与Dockerfile的配套使用 前端应用:nginx的反向代理 在容器中运行整个应用程序 总结 ASP.NET Core应用程序的构建 构建ASP.NET Core应用程序的方式有很多种,你可以使用Visual Studio 2017的项目模板直接创建,也可以在安装了.N…
  Kubernetes是一个伟大的容器"乐队".但它不管理Pod-to-Pod通信的网络.这是容器网络接口(CNI)插件的使命,它是实现容器集群工具(Kubernetes,Mesos,OpenShift等)的网络抽象的标准化方法. 但重点是:这些CNI之间有什么区别?哪一个性能最好?哪一个最精瘦? 本文展示了我在10Gbit / s网络上进行的基准测试的结果.这些结果也是在2018年11月15日在马赛(法国)的Devops D-DAY 2018年的一次会议上提出的. 基准背景 基准测…
一.API 对象 API对象是K8s集群中的管理操作单元.K8s集群系统每支持一项新功能,引入一项新技术,一定会新引入对应的API对象,支持对该功能的管理操作.例如副本集Replica Set对应的API对象是RS. 每个API对象都有3大类属性:元数据metadata.规范spec和状态status. 1.1.元数据metadata 元数据是用来标识API对象的,每个对象都至少有3个元数据: namespace name uid 除此以外还有各种各样的标签labels用来标识和匹配不同的对象,…
一.简介 服务:一种为一组功能相同的 Pod 提供单一不变的接入点的资源.服务 IP 和端口不会改变 对服务的连接会被路由到提供该服务的任意一个 Pod 上(负载均衡) 服务通过标签选择器判断哪些 Pod 属于服务 WHY Service Pod 需要对集群内部其他 Pod 或集群外部客户端 HTTP 请求作出响应 Pod 生命周期短,随时启动或关闭.K8s 在 Pod 启动前为其分配 IP 地址,因此客户端不能提前知道 Pod 的 IP 地址 多个 Pod 可能提供相同的服务,因此需要单一的…