K8S中的Job和CronJob】的更多相关文章

Job Job负责批量处理短暂的一次性任务 (short lived one-off tasks),即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束. Kubernetes支持以下几种Job: 非并行Job:通常创建一个Pod直至其成功结束 固定结束次数的Job:设置.spec.completions,创建多个Pod,直到.spec.completions个Pod成功结束 带有工作队列的并行Job:设置.spec.Parallelism但不设置.spec.completions,当…
在k8s中,所有的配置都是 json格式的.但为了读写方便,通常将这些配置写成yaml 格式,其运行的时候,还是会靠yaml引擎将其转化为json,apiserver 也仅接受json的数据类型. yaml 结构主要有字典与数组两种结构: 1.字典类型,其中有普通字典与多层嵌套字典,字典的键值使用 : 标识. 普通字典: apiVersion: v1, 此时 apiVersion 为key, v1 为value. 多层嵌套字典: metadata: labels: k8s-app: kubern…
前言 在企业落地 K8S 的过程中,私有镜像库 (专用镜像库) 必不可少,特别是在 Docker Hub 开始对免费用户限流之后, 越发的体现了搭建私有镜像库的重要性. 私有镜像库不但可以加速镜像的拉取还可以避免因特有的"网络问题"导致镜像拉取失败尴尬. 当然部署了私有镜像库之后也需要对镜像库设置一些安全策略,大部分私有镜像库采用 IP访问策略+认证 (非公开项目) 的方式对镜像库进行安全保护. 那么对于含有认证限制的镜像库,在 K8S 中该如何优雅的集成呢? 下文就总结了在 K8S…
k8s 中 Pod 的控制器 前言 Replication Controller ReplicaSet Deployment 更新 Deployment 回滚 deployment StatefulSet DaemonSet Job 和 CronJob 总结 参考 k8s 中 Pod 的控制器 前言 Pod 是 Kubernetes 集群中能够被创建和管理的最小部署单元.所以需要有工具去操作和管理它们的生命周期,这里就需要用到控制器了. Pod 控制器由 master 的 kube-contro…
部署flannel作为k8s中的网络插件,yaml文件都大小同异. 但在要注意以下细节. 以前,只需要前面master判断. 现在也需要有not-ready状态了. tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule - key: node.kubernetes.io/not-ready operator: Exists effect: NoSchedule --- kind…
docker私有仓库建立 环境说明我们选取192.168.5.2做私有仓库地址yum install docker -y1.启动docker仓库端口服务 docker run -d -p 5000:5000 --privileged=true -v /data/history:/data/registry registry [root@Control docker_dw_images]# docker imagesREPOSITORY           TAG                 …
1.K8S中如何跨namespace 访问服务? 2.在Pod中为什么ping不通ClusterIP? 简述: Rancher2.0中的一个用户,在K8S环境中,创建两个namespace,对应用进行分割管理,在一个namespace的pod中,如何访问另一个namespace中的服务?--K8S使用kube-DNS实现服务发现功能的,可以通过DNS名称访问服务名. 在K8S中,部署一个带ClusterIP的服务,供集群内部网络访问.为什么这个ClusterIP无法ping通?--Cluster…
一.概述 harbor是什么呢?英文单词的意思是:港湾.港湾用来存放集装箱(货物的),而docker的由来正是借鉴了集装箱的原理,所以harbor是用于存放docker的镜像,作为镜像仓库使用.官方的说法是:Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器. harbor镜像仓库是由VMware开源的一款企业级镜像仓库,它包括权限管理(RBAC).LDAP.日志审核.管理界面.自我注册.镜像复制等诸多功能. 二.harbor安装部署 1.安装需求 资源 要求 CPU…
2016-01-25更新 上篇文章总结k8s中搭建hbase时,遇到Pod中hostname的DNS解析问题,本篇将通过修改kube2sky源码来解决这个问题. 1 前言 kube2sky在Github上的项目(戳这里)一直在更新,放在DockerHub平台上的镜像滞后较多,有重新构建的必要.虽然新版kube2sky加入了对Pod的DNS解析,域名格式为<pod-ip-address>.<namespace>.pod.<cluster-name>,并不能直接通过host…
在K8s中创建StatefulSet 遇到的问题: 使用Deployment创建的Pod是无状态的,当挂在Volume之后,如果该Pod挂了,Replication Controller会再run一个来保证可用性,但是由于是无状态的,Pod挂了的时候与之前的Volume的关系就已经断开了,新起来的Pod无法找到之前的Pod.但是对于用户而言,他们对底层的Pod挂了没有感知,但是当Pod挂了之后就无法再使用之前挂载的磁盘了. 解决方案 使用K8s v1.5版本推出的StatefulSet可以保留P…
一.dns服务 1.解决的问题 为了通过服务的名字在集群内进行服务相互访问,需要创建一个dns服务 2.k8s中使用的虚拟dns服务是skydns 二.搭建 1.创建并应用skydns-rc.yaml [root@master dns]# cat skydns-rc.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: kube-dns namespace: kube-system labels: k8s-app…
在k8s中的基本概念 一.Pod1. podk8s下最重要也最基本的概念,由一个根容器Pause和许多用户业务容器组成,是容器的载体. 2. pod的yaml定义格式及字段 apiVersion: v1 //版本 kind: pod //类型,pod metadata: //元数据 name: String //元数据,pod的名字 namespace: String //元数据,pod的命名空间 labels: //元数据,标签列表 - name: String //元数据,标签的名字 ann…
在K8s中创建StatefulSet 遇到的问题: 使用Deployment创建的Pod是无状态的,当挂在Volume之后,如果该Pod挂了,Replication Controller会再run一个来保证可用性,但是由于是无状态的,Pod挂了的时候与之前的Volume的关系就已经断开了,新起来的Pod无法找到之前的Pod.但是对于用户而言,他们对底层的Pod挂了没有感知,但是当Pod挂了之后就无法再使用之前挂载的磁盘了. 解决方案 使用K8s v1.5版本推出的StatefulSet可以保留P…
#查看etcd pod kubectl get pod -n kube-system | grep etcd #进入etcd pod kubectl exec -it -n kube-system etcd-node1.com sh #设置etcdctl 使用的版本,k8s中使用v3版本export ETCDCTL_API=3 #查询etcd中所有的key etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernete…
Prometheus K8S中部署Alertmanager 设置告警和通知的主要步骤如下:一.部署Alertmanager二.配置Prometheus与Alertmanager通信三.配置告警 1. prometheus指定rules目录 2. configmap存储告警规则 3. configmap挂载到容器rules目录 一.部署Alertmanager 配置文件 已经修改好的配置文件 # 存储主配置文件 alertmanager-configmap.yaml apiVersion: v1…
k8s 中的服务如何沟通 https://www.jianshu.com/p/9fae09876eb7 本文将介绍 k8s 中的服务如何相互访问,例如后端服务访问数据库,不同类型的服务间的相互访问.并介绍用于实现这种访问的资源 服务service. 挡在 pod 身前的 service 我们现在已经有了 pod ,那让他们相互访问不可以么?答案是,不可以,因为 pod 是有生命周期的,他可能随时被创建也可能随时被销毁,而 每次新建 pod 就会给其分配一个随机的 ip,并且 k8s 也会自动调控…
Kubernetes的网络通信问题: 1. 容器间通信: 即同一个Pod内多个容器间通信,通常使用loopback来实现. 2. Pod间通信: K8s要求,Pod和Pod之间通信必须使用Pod-IP 直接访问另一个Pod-IP 3. Pod与Service通信: 即PodIP去访问ClusterIP,当然,clusterIP实际上是IPVS 或 iptables规则的虚拟IP,是没有TCP/IP协议栈支持的.但不影响Pod访问它. 4. Service与集群外部Client的通信,即K8s中P…
部署好了k8s以后 部署参考https://www.cnblogs.com/minseo/p/12055731.html 怎么在k8s部署应用 项目迁移到k8s平台是怎样的流程 1,制作镜像 2,控制器管理Pod 3,暴露应用 4,对外发布应用 5,日志/监控 k8s基本概念 Cluster Cluster 是计算.存储和网络资源的集合,Kubernetes 利用这些资源运行各种基于容器的应用. Master Master 是 Cluster 的大脑,它的主要职责是调度,即决定将应用放在哪里运行…
在 k8s 中通过 Ingress 配置域名访问 https://juejin.im/post/5db8da4b6fb9a0204520b310 在上篇文章中我们已经使用 k8s 部署了第一个应用,此时我们可以使用 Ingress 使它可以在互联网上可以被访问到 (当然你要有自己的域名并且指向正确) 部署你的第一个应用: Pod,Application 与 Service 以下是官网搬用的关于 Ingress 的一幅图,用以描述 Ingress 的作用.如果你对它一无所知,你可以把它理解为传统的…
在 k8s 中自动为域名配置 https https://juejin.im/post/5db8d94be51d4529f73e2833 随着 web 的发展,https 对于现代网站来说是必不可少的.如果你想得到一个免费的证书,那么 Let's Encrypt 是一个不错的选择,它的主要目的是推进网站 https 的进程. 感谢 Let's Encrypt 的免费证书 借助 helm,在 k8s cluster 中为域名配置 https 将会变得非常简单,部署资源成功后在 k8s中为 Ingr…
目录 一.网络前提条件-网络模型 二.需要解决的网络问题 1.容器和容器之间的网络 2.pod与pod之间的网络 同一台node节点上pod和pod通信 不同node节点上pod和pod通信 3.pod与service之间的网络 4.Internet与service之间的网络 Internet到k8s的流量 本文参考戳该链接可以看原文,原文作者整理非常好 一.网络前提条件-网络模型 k8s组网要求 所有的Pods之间可以在不使用NAT网络地址转换的情况下相互通信 所有的Nodes之间可以在不使用…
了解k8s中的Liveness和Readiness Liveness: 表明是否容器正在运行.如果liveness探测为fail,则kubelet会kill掉容器,并且会触发restart设置的策略.默认不设置的情况下,该状态为success.Readiness: 表明容器是否可以接受服务请求.如果readiness探测失败,则endpoints控制器会从endpoints中摘除该Pod IP.在初始化延迟探测时间之前,默认是Failure.如果没有设置readiness探测,该状态为succe…
k8s中token过期重新生成 通过kubeadm初始化之后,都会提供node加入的token 默认的token的有效期是24小时,当过期了,如何新生成呢 重新生成token: [root@k8s-master ~]# kubeadm token create kk0ee6.nhvz5p85avmzyof3 [root@k8s-master ~]# kubeadm token list TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS bgis6…
本章将会讲解: pod的概念,以及如何向k8s中部署一个单体应用实例. 在上面的篇幅中,我们了解了docker,并制作.运行了docker镜像,然后将镜像发布至中央仓库了.然后又搭建了本机的k8s环境.本篇将演示如何将单个服务实例部署到k8s. Pod的含义 k8s的最小部署单元是pod,pod这个单词的意思是"豆荚",我们可以想象一下豆荚里边包含了一颗颗小豆子.与豆荚相似,k8s中包含了一个个pod,pod中运行着我们的程序,如下图: 在K8s中部署服务 在k8s中部署一个Pod,需…
Kubernetes自身并没有用户管理能力,无法像操作Pod一样,通过API的方式创建/删除一个用户实例,也无法在etcd中找到用户对应的存储对象. 在Kubernetes的访问控制流程中,用户模型是通过请求方的访问控制凭证(如kubectl使用的kube-config中的证书.Pod中引入的ServerAccount)产生的 Kubernetes API的请求从发起到其持久化入库的流程如图:     一.认证阶段(Authentication) 判断用户是否为能够访问集群的合法用户. apis…
K8S中的包管理工具 1. 客户端Helm(即Helm)  通过脚本安装:curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > helm.sh,赋权运行: 123456789101112 chmod +x helm.sh./helm.sh# 输出Downloading https://kubernetes-helm.storage.googleapis.com/helm-v2.13.1-linux-amd64.…
安装和配置数据存储仓库MySQL 1.MySQL简介 2.MySQL特点 3.安装和配置MySQL 4.在MySQL数据库导入数据 5.对MySQL数据库进行授权 1.MySQL简介 MySQL 是一款安全.跨平台.高效的,并与PHP.Java等主流编程语言紧密结合的数据库系统.该数据库系统是由瑞典的MySQL AB公司开发.发布并支持,由 MySQL的初始开发人员 David Axmark 和 Michael Monty Widenius 于 1995 年建立的.MySQL 的象征符号是一只名…
现状 加参数 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=logs/test.dump 可以实现在jvm发生内存错误后 会生成dump文件 方便开发人员分析异常原因. 当运行在k8s中,如果进程发生错误 导出dump文件后 ,k8s会重启dokcer容器,上一次崩溃生成的dump文件就没有了.如果应用并没有完全崩溃 此时极其不稳定 最好也能通知到技术人员来处理.这样不方便我们排查原因 所有写了一个小工具.大概原理如下 1. -XX:+Heap…
概述 在容器的部署过程中,有的时候需要在容器运行之前进行一些预配置的工作,比如下载配置,判断某些服务是否启动,修改配置等一些准备的工作,想要实现这些功能,在k8s中可以使用初始化容器,在应用容器运行之前进行一些预处理的工作. 本文档介绍在k8s中初始化容器的使用方法. 使用方法 以下的例子使用初始化容器,在nginx容器启动之前下载一个index.html文件 kubectl apply -f - <<EOF apiVersion: v1 kind: Pod metadata: name: i…
k8s中的nginx-ingress如何配置路径重定向 一. 需求描述 路径重定向的一般应用场景: 调整用户浏览的URL,看起来更规范 为了让搜索引擎收录网站内容,让用户体验更好 网站更换新域名后 根据特殊的变量.目录.客户端信息进行跳转 我这里遇到的问题是,以前的很多服务路径配置不规范,有的服务使用项目名作为二级路径,有的服务是随意定义的访问路径,为了统一使用项目名作为访问的二级路径,避免修改代码,所以需要配置路径重定向. 举一个例子,我有一个 a 服务,它原来的访问路径是 api/v1/ap…