(用在启动时间比较长的情况,启动成功后才交给livenessProbe) ExeAction 在容器内执行命令,返回码为0表示成功 apiVersion: v1 kind: Pod metadata...#探测间隔 failureThreshold: 3 # 重试几次表示失败 tcpSocket 通过端口测试TCP连接,能够建立连接表示成功 apiVersion: v1 kind: Pod...failureThreshold: 3 # 连续探测几次失败认为失败,默认3,最小1 Http 请求测试,返回的代码在200-400之间表示成功 apiVersion: v1 kind: Pod
有状态和无状态的区别 无状态 认为Pod都是一样的 没有顺序要求 不用考虑在哪个Node运行 随意进行伸缩和扩展 有状态 有关无状态的因素都需要考虑 让每个Pod都是独立的,保持Pod启动顺序的唯一性...name: nginx image: nginx:1.7.9 ports: - containerPort: 80 部署守护进程 在每个Node上运行一个Pod...,新加入的node也同样运行一个Pod在里面 apiVersion: apps/v1 kind: DaemonSet metadata: name: ds-test labels: app
在之前的文章《kubernete中的原子调度单位:pod》中提到过,如果把kubernete比作linux操作系统,那pod就是虚拟机,pod里面的容器就是虚拟机上的进程。这个类比可以说非常形象。...在之前的文章《浅谈kubernete中的flannel网络插件》文章中介绍过,pod中有一个infra的容器,在pod创建时这个容器总是第一个被创建。...pod的关键属性 pod是kubernete中最小的调度单位。在kubernete中,调度、网络、存储以及安全等属性,都是pod级别的。...总结 pod是kubernete中最重要的概念,把pod类比成操作系统上的虚拟机、pod中的容器类比成虚拟机上运行的进程,是非常恰当的。...kubernete强大的编排功能,原子单位是pod,pod是kubernete中的原子编排和调度对象。
在前面的文章中,我们介绍了容器技术,他的本质是操作系统上的一个进程,那么打包的容器镜像其实就是一个安装包,类似于windows操作系统中的exe文件,那容器所在的kubernete集群其实就是一个操作系统...而如果我们使用kubernete中的pod,pod会对3个容器统一管理和调度,这样就会直接选择A宿主机。...在pod的,实现这个功能,依靠的是一个infra容器,这个容器使用的镜像是k8s.gcr.io/pause,只有不到200k,它的状态永远是pause,作用是启动后控制namespace,pod中的其他容器启动后就可以加入当前这个...下面我们看一个yaml文件,Tomcat和war在同一个pod的不同容器中 apiVersion: v1 kind: Pod metadata: name: javaweb-2 spec: initContainers...这就是kubernete容器编排的高明之处。
mvnw是Maven Wrapper的缩写。因为我们安装Maven时,默认情况下,系统所有项目都会使用全局安装的这个Maven版本。但是,对于某些项目来说,它可...
本文通过使用 Kubernetes Pod 作为 Jenkins 代理,深入探讨 Jenkins 和 Kubernetes 如何协同工作。...来自主机服务器上可用的基本映像“ubuntu18”,其中包含将在容器内使用的用户详细信息 当 pod 启动时执行命令“/usr/bin/sshd -D”以在调试模式下启动 SSH 守护进程 挂载主机服务器的主目录...“/home/demo”到pod中的home目录 打开端口“22”用于 SSH 连接 创建服务“demo-service” 打开nodePort“32222”,使服务可以从Kubernetes集群外部访问...打开端口“2222”,这是 Kubernetes 集群内服务的内部端口 打开 Pod 容器正在侦听的目标端口“22” 映射nodePort、targetPort和端口 运行以下命令将启动 pod 和服务...远程根目录:/home/demo/(本节点专用目录) 启动方式:通过SSH启动代理 Host:主机的公网IP地址 凭据:我们用来启动容器的用户的凭据。
既然您知道不需要SSH与您的容器进行交互,下面是可用工具的概述(以及一些使用SSH的注意事项,尽管有许多花哨的工具使其变得多余)。...首先,获取正在运行的Pod的列表(或参阅Web控制台以获取活动Pod的列表)。 要获取该列表,请输入: $ oc get pods 您可以查看资源(窗格,内部版本或容器)的日志。...您可以使用以下命令远程执行命令: $ oc exec example-1-e1337 --container app hostname example.local 这类似于非交互式运行SSH...首先,确认您的Pod正在运行: $ kubectl get pods 只要列出了包含您的应用程序的Pod,就可以使用exec命令在容器中启动shell。...使用名称example-pod作为吊舱名称,输入: $ kubectl exec --stdin=false --tty=false example-pod -- /bin/bash root@example.local
1.打包springboot镜像 2.在kubernete上发布镜像 3.测试 ?...在之前的文章中,我讲了使用kubeadm从0到1搭建kubernete集群,今天我们来聊一下如何在这套k8s集群上部署springboot应用。...,如果提供服务的时候如果一个pod挂了,集群会再创建一个新的出来,一直保持有2个pod。...接着我们进入容器内部看一下网络连通性 kubectl exec -it springboot-mybatis-deployment-5b78f66997-2hhdq -- /bin/sh 我们分别ping...pod中的日志如下: ?
这是kubernete编排技术的第六篇,本文主要讲一下RBAC。之前讲过,kubernete所有API对象,都保存在etcd里。...subjects: - kind:Group name:system:serviceaccounts:jinjunzhu apiGroup:rbac.authorization.k8s.io 关于如何使用外部授权服务...,这个pod名字叫sa-pod,镜像是我之前使用的一个springboot镜像,我们定义这个pod使用我们刚刚创建的名字叫jinjunzhu的ServiceAccount, apiVersion: v1...container spingboot-mybatis 上面输出的Mounts部分信息我们可以看到,前面我们创建jinjunzhu这个ServiceAccount时生成的token已经挂载到了一个目录下面,这是我们进入这个容器内部...最后要说的是,如果我们声明pod的时候,没有定义serviceAccountName,kubernete会怎么控制pod的操作权限呢?
在kubernete中,最小的调度单位是pod,关联密切的容器可以被调度在一个pod中,共享network namespace、数据卷,从而可以高效进行通信。...kubernete为每一个pod绑定一个service服务,service服务作为pod的代理访问入口,配置的IP等地址信息是固定不变的,这样即使pod重启后IP地址发生了变化,调用方也可以通过service...在有些情况下,访问pod需要授权,比如访问数据库pod,这时kubernete提供了secret对象,这个对象是保存在etcd里面的键值对,存储了被访问pod的授权信息。...总之,kubernete通过编排对象来管理应用,比如通过pod来管理应用容器,通过job来管理一次性运行任务,通过daemonset来管理宿主机上唯一的守护进程,通过cronjob来管理定时任务。...master组件的yaml文件放在/etc/kubernetes/manifests目录下,kubernete启动时,kubelet会检查到这些yaml文件,为master节点创建对应的pod。
service:用于声明整理后端pod信息,ingress-controller 的配置文件中直接映射到后段pod IP+端口 ingress:用于声明前端请求域名 和 path 路径,对应的后段service...和 端口,ingress中声明的配置会自动注入到ingress-controller 的配置文件中 三:如何在TKE集群中部署nginx-ingress 在kubernetes集群中部署nginx-ingress...可以看到具体的server 和 client 版本 image.png 2.使用helm部署nginx-ingress 这里同样可以直接在控制台操作,如图: image.png 点击完成,选择进入刚才创建的...Address 地址是node IP (已跟产品侧提需求修改,这里先不关注Address 问题) 我们上面讲过,这里创建完ingress ,会自动把转发信息同步到ingress-controller 中,我们这就进入...ingress-controller 所在的pod 观察下,对应的转发规则是否生成。
本文以安装rabbitmq为例,使用minikube来部署一个kubernete节点 1.启动minikube,使用上一篇文章的启动命令 minikube start --image-repository...='registry.cn-hangzhou.aliyuncs.com/google_containers' --vm-driver=none 2.下面使用已经存在的镜像rabbitmq部署kubernete...这个地址就是我们访问rabbitmq的地址,在浏览器输入这个地址,进入rabbitmq页面, ? 5.打开Dashboard minikube dashboard 提示如下: ?...在虚机浏览器输入下面网址,可以看到kubernete dashboard页面 http://127.0.0.1:39780/api/v1/namespaces/kubernetes-dashboard...6.常用命令 #查看kubernete集群下的pod kubectl get pod #查看集群下所有pod和namespace信息 kubectl get pods --all-namespaces
写留言这篇文章我们来介绍kubernete的一个编排对象,叫DaemonSet,从名字上就能看出,这是一个守护进程。...它的作用是在kubernete集群的每个节点上都会创建一个Daemon Pod,而且仅有一个。 作为容器的守护进程,这个Daemon Pod的典型应用是运行网络插件、存储插件、监控和日志组件等。...调度策略 Daemon pod由kubernete scheduler调度到需要的node上,然后由DaemonSet Controller在node上进行创建和调度。...跟普通pod不一样的是,Daemon pod在创建之前不会进入pending状态。 那DaemonSet怎么控制pod在指定节点上运行呢?它是通过nodeAffinity这个标签来管理的。...,而我本地的kubernete集群只有2个节点,一个master和一个普通节点,这2个节点都调度了一个Daemon pod,而普通pod是不能调度到master节点的,这就是DaemonSet的tolerations
在kubernete的发展历程中,kubernete并没有实现自己的网络规范,而是专注于编排的核心功能。...下面再回顾一下我们上篇kubernete部署springboot的系统结构,见下图 ?...进入第一个pod kubectl exec -it springboot-mybatis-deployment-5b78f66997-6kl96 -- /bin/sh / # ifconfig eth0...在上篇介绍的如何在kubernete集群上部署springboot应用,使用命令kubectl apply -f springboot-mybatis.yaml创建pod时,第一个pod里面创建的容器是一个...infra容器,这个容器的作用其实就是要控制network-namespace,这个容器创建完成后,kubernete就会调用cni网络插件为这个容器配置网络,而pod里面的其他容器则会跟infra容器共享
这篇文章我们学习一下kubernete对Job的编排。不同于前面讲的Deployment、StatefulSet的编排,Job是一个执行一次就结束的pod,并不会滚动更新。...backoffLimit:默认是6,我们定义失败次数是4 activeDeadlineSeconds:控制pod重新创建时间,防止失败后无限制的重新创建,Job运行结束后就会进入Completed状态,...然后查看pod数量,2个pod都已经进入了running状态。...还记得之前文章《kubernete编排技术二:deployment》中用deployment来控制ReplicaSet对象吗,其实是一个道理。...这些对kubernete中的应用起了很好的支持。
对这种有状态的应用,kubernete的解决方案是StatefulSet。...拓扑状态 在之前的文章《kubernete架构体系介绍》中提到过,kubernete为每一个pod绑定一个service服务,service服务作为pod的代理访问入口,配置的IP等地址信息是固定不变的...ContainerCreating 0 0s bootstatefulset-1 1/1 Running 0 2s 我们进入...ContainerCreating 0 0s bootstatefulset-0 1/1 Running 0 1s 再次进入...这需要kubernete为这个PVC绑定一个pv,用这个这个pv来声明volume,下面我们看一个PV的定义: kind: PersistentVolume apiVersion: v1 metadata
如何配置SSH 一、SSH配置通用知识 SSH(Secure Shell)是用于安全远程登录的网络协议,通过加密通信保障数据传输安全。...版本控制 ip ssh version 2 ssh server compatible-ssh1x disable ssh server compatibility legacy disable...配置SSH参数 ip ssh version 2 ip ssh time-out 90 ip ssh authentication-retries 3 !...admin ssh user admin authentication-type password ssh user admin service-type stelnet ssh server compatible-ssh1x...华三设备配置 sys sysname Switch # 生成RSA密钥 public-key local create rsa # 配置SSH参数 ssh server enable ssh server
而k8s的网络有pod 网络、service网络以及宿主机网络,这个提示很明显是pod网络。...既然是没有可用ip可分配了,1.33~1.62也就只有30个ip地址,那就去看看pod cidr的规划,以及这个服务调度到的node上所分配的pod地址段和已经在node上运行的pod。...ip, 则最多能有30个pod运行,而问题node上刚好已经跑了30个pod,当再有pod调度过 来,那就有问题了(其实按理说都不应该再被调度过来的,这一点需要看看k8s的调度策略)。...而且算下来,就支持8个node,每个node上30个pod,似乎是有点少。 由以上做一个总结:出现问题的根本原因是pod cidr规划的不够完美,需要做一些修改。...另外,由于集群中已经运行了一些pod,所以需要先修改集群的cidr,然后新增几个节点,把已经运行的服务强制调度到新的节点上,然后删除旧的节点,然后再重新加入。
那么除了 StatefulSet 管理的 Pod 之外,其他的 Pod 是否也可以生成 DNS 记录呢?...官方文档中有一段 Pod’s hostname and subdomain fields 说明: “Pod 规范中包含一个可选的 hostname 字段,可以用来指定 Pod 的主机名。...当这个字段被设置时,它将优先于 Pod 的名字成为该 Pod 的主机名。...举个例子,给定一个 hostname 设置为 "my-host" 的 Pod, 该 Pod 的主机名将被设置为 "my-host"。...Pod 规约还有一个可选的 subdomain 字段,可以用来指定 Pod 的子域名。
通过调整副本数实现Pod停止 使用说明 对于由Deployment、StatefulSet或ReplicaSet管理的Pod,最直接的方法是调整副本数量。...直接删除Pod 使用说明 直接删除Pod可以实现临时停止效果,但如果Pod由控制器管理,系统会自动创建新的Pod替代。...适用场景 快速重启单个故障Pod 开发测试环境调试 需要强制重新调度的情况 代码示例 # 删除特定Pod kubectl delete pod redis-pod-xyz123 -n cache #...节点级别的Pod调度控制 使用说明 通过cordon和drain命令可以实现节点级别的Pod管理。 cordon 阻止新Pod调度到节点, drain则会优雅驱逐现有Pod。...提供了多种灵活的方法来管理Pod的运行状态。