我们前面部署的pod调度取决于kube-scheduler,它会根据自己的算法,集群的状态来选择合适的node部署我们的pod. 下面我们来看下如何来根据我们自己的要求,来影响pod的调度. 定向node调度 有时候我们想将pod调度到某一些node上,比如csharp开发的程序,调度到某一些node,java开发的程序调度到另一些node,这时候我们可以选择定向调度. 定向调度需要用到我们前面说的label,具体做法就是将node打上指定的label,然后在定义pod/deployment的时…
上篇我们已经安装好k8s1.23集群,现在我们开始使用k8s部署我们的项目 Pod Pod 是一组容器集合,是可以在 Kubernetes 中创建和管理的.最小的可部署的计算单元.这些容器共享存储.网络. 准备Demo 我们要实现多容器Pod所以准备两个WebAPI项目 新建一个webapi,命名为oneapi,里面新增TestController,新增两个api,一个是返回当前pod的ip,另一个是模拟高cpu操作 [ApiController] [Route("[controller]&qu…
emptyDir临时卷 有些应用程序需要额外的存储,但并不关心数据在重启后仍然可用. 例如,缓存服务经常受限于内存大小,将不常用的数据转移到比内存慢.但对总体性能的影响很小的存储中. 再例如,有些应用程序需要以文件形式注入的只读数据,比如配置数据或密钥. 临时卷就是为此类用例设计的.因为卷会遵从 Pod 的生命周期,与 Pod 一起创建和删除, 所以停止和重新启动 Pod 时,不会受持久卷在何处可用的限制. 下面我们就通过一个临时卷,让一个pod中的两个容器实现文件共享. apiVersion:…
上一篇我们通过deployment实现了pod的横向扩展,但是仍然不能负载,也不能对外提供服务,现在我们来看看如何通过k8s实现负载与外网访问 Service service为一组pod提供一个统一的入口,实现负载,也可实现外部访问. 原理  在Kubernetes集群的每个Node上都会运行一个kube-proxy服务进程,kube-proxy会通过我们定义的service,自动生成iptables规则,这样就能将到某个Service的访问请求转发到后端的多个Pod实例上. Service类型…
什么是HPA https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale/ 我们前面有通过kubectl scale命令手动扩展我们的服务,生产环境中我们希望k8s能够根据一些指标信息自动扩展服务. 这时我们可以利用k8s的HPA(水平扩展)来根据 CPU利用率等指标自动扩缩Deployment.ReplicaSet 或 StatefulSet 中的 Pod 数量. HPA原理 HPA控制器通过Metr…
ServiceAccount ServiceAccount是给运行在Pod的程序使用的身份认证,Pod容器的进程需要访问API Server时用的就是ServiceAccount账户. ServiceAccount仅局限它所在的namespace,每个namespace创建时都会自动创建一个default service account. 创建Pod时,如果没有指定Service Account,Pod则会使用default Service Account. 通过以下命令可以查看我们前面创建ch…
目录 1. k8s核心资源之Pod 1.1 什么是Pod? 1.2 Pod如何管理多个容器? 1.3 Pod网络 1.4 Pod存储 1.5 Pod工作方式 1.5.1 自主式Pod 1.5.2 控制器管理的Pod 1.6 创建Pod流程 2.如何编写资源清单YAML文件? 1. k8s核心资源之Pod 1.1 什么是Pod? 官方文档:https://kubernetes.io/docs/concepts/workloads/pods/ Pod是Kubernetes中的最小调度单元,k8s是通…
上文说了一下k8s的简单使用,接下来就让我们来具体深入了解一下Pod.为了避免篇幅太长,所以会分成几篇. 目录: Pod定义详解 静态Pod Pod容器共享Volume 一.Pod定义详解 先看一个简单的nginx的Pod定义: apiVersion: v1 kind: Pod metadata: nam: nginx-test labels: app: nginx-test spec: containers: - name: nginx-test image: nginx:latest ima…
k8s运维之pod排错 K8S是一个开源的,用于管理云平台中多个主机上的容器化应用,Kubernetes的目标是让部署容器化变得简单并且高效 K8S的核心优势: 1,基于yaml文件实现容器的自动创建.删除 2,更快速实现业务的弹性横向扩容 3,动态发现新扩容的容器并自动对用户提供访问 4,更简单.更快速的实现业务代码升级和回滚一般来说pod处于异常状态,都可以执行以下命令查看pod状态kubectl get pod <pod-name> -o yaml   #查看pod配置kubcctl g…
k8s集群Job Pod 容器可能因为多种原因失效,想要更加稳定的使用Job负载,有哪些需要注意的地方? 面试官:"计数性Job默认完成模式是什么?Indexed模式如何发布自定义索引呢?" 面试官:"k8s的Job Pod 中的容器可能因为多种不同原因失效,想要更加稳定的使用Job负载,有哪些可以注意的地方?" 面试官:"为什么k8s建议在调试 Job 时将 `restartPolicy` 设置为 "Never"?" 面试官…
https://www.cnblogs.com/knight-errant/p/10444777.html 设备重装,换设备,VSCode 又要重新配置了?不不不,简单三步,让你的 VSCode 配置同步,不再需要频繁配置,即插即用. 安装拓展 Settings Sync 在 VSCode 拓展中搜索 Settings Sync 并安装,安装完成后,重启 VSCode 设置 Github Person Access Token 这一步需要你有一个 github 的账号,因为我们需要把配置上传到…
很多人都想拥有自己的个人博客,还得看起来漂亮.酷酷的.尤其对开发者来说,不仅可以分享技术(装)心得(逼),面试的时候还能成为加分.这里介绍两款好用的神器,不用忙前(前端)忙后(后端),简单3min即可搞定,本文免费分享给大家. PS:不会写代码?没有备案的域名?没有服务器?在这里,这些都不是事儿! 工具介绍 Serverless Framework:Serverless Framework 是业界非常受欢迎的无服务器应用框架,开发者无需关心底层资源即可部署完整可用的 Serverless 应用架…
目录: Pod的调度 Pod的扩容和缩容 Pod的滚动升级 一.Pod的调度 Pod只是容器的载体,通常需要通过RC.Deployment.DaemonSet.Job等对象来完成Pod的调度和自动控制功能. 1.RC.Deployment全自动调度 RC的主要功能之一就是自动部署一个容器应用的多份副本,以及持续监控副本的数量,在集群内始终维持用户指定的副本数量. 2.NodeSelector:定向调度 Master上的Schedule负责实现Pod的调度,但无法知道Pod会调度到哪个节点上.可以…
使用 minikube 在本地搭建 k8s 已经比以前要简单很多了.本文,我们通过简短的三分钟来重现一下在本地搭建 k8s 实验环境的步骤. Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架.如果您是首次阅读本系列文章.建议可以先从本文末尾的入门文章开始了解. 下载 Minikube 首先,你可能会考虑从官网下载 minikube 然后进行安装,但是这样实际上可以预知的是,在后续的使用中你可能会到由于网络的特殊性,无法正常地启动. 因此,需要使用一些特殊的办法来解决这个问…
Docker+K8s基础篇(三) kubernetes上的资源 A:k8s上的常用资源 Pod的配置清单 A:Pod上的清单定义 B:Pod创建资源的方法 C:spec下其它字段的介绍 Pod的生命周期 A:Pod的生命周期阶段 B:容器的两种探测(探针) C:容器启动后和终止前钩子 ♣一:kubernetes的资源 A:k8s上的常用资源: 1:workload(工作负载型对象): pod,Replicaset,Deployment,statefulSet,DaemonSet,Job,Cron…
这段时间学习了一下 git jenkins docker  最近也在看  Kubernetes  感觉写得很赞  也是对自己对于K8S 有了进一步得理解  感谢 倪 大神得Blog 也希望看到这篇Blog 得人  有点帮助   ‘“Kubernetes初体验”   转自    http://time-track.cn/kubernetes-trial.html Kubernetes Cluster Kubernetes is a production-grade, open-source pla…
前言 本篇是Kubernetes第六篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战. Kubernetes系列文章: Kubernetes介绍 Kubernetes环境搭建 Kubernetes-kubectl介绍 Kubernetes-Pod介绍(-) Kubernetes-Pod介绍(二)-生命周期 Pod调度 在Kubernetes中我们很少直接创建一个Pod,大多数情况下会通过Replication Controller.Deployment.Daemonset.Job等控制…
第一章.什么是kube-controller-manager? Controller Manager 由 kube-controller-manager 和 cloud-controller-manager 组成, 是Kubernetes 的大脑, 它通过 apiserver 监控整个集群的状态, 并确保集群处于预期的工作状态. kube-controller-manager 由一系列的控制器组成 Replication Controller Node Controller CronJob Co…
Study From https://jimmysong.io/kubernetes-handbook/practice/using-nfs-for-persistent-storage.html 1. 机器不FQ 所以手工download 了image 来处理. 需要的images docker search nfs-client-provisioner 比较简单的处理方法:docker pull registry.docker-cn.com/jmgao1983/nfs-client-prov…
基于Kubeadm 搭建K8s集群: 通过上一篇博客,我们已经基本了解了 k8s 的基本概念,也许你现在还是有些模糊,说真的我也是很模糊的.只有不断地操作去熟练,强化自己对他的认知,才能提升境界. 我们就去搭建一个集群来感受一下.我这里搭建的一个Master 2个 Worker.尽量保持机器环境干净,我由于minikube没装好导致kubelet一直无法启动. 配置要求(官网推荐https://kubernetes.io/docs/setup/production-environment/too…
如何创建服务 1.创建Deployment #启动三个pod,运行httpd镜像,label是run:mcw-httpd,Seveice将会根据这个label挑选PodapiVersion: apps/v1 [machangwei@mcwk8s-master ~]$ cat mcwHttpd.yml kind: Deployment metadata: name: mcw-httpd spec: replicas: 3 selector: matchLabels: run: mcw-httpd…
service 每个 Pod 都有自己的 IP 地址.当 controller 用新 Pod 替代发生故障的 Pod 时,新 Pod 会分配到新的 IP 地址.这样就产生了一个问题: 如果一组 Pod 对外提供服务(比如 HTTP),它们的 IP 很有可能发生变化,那么客户端如何找到并访问这个服务呢? Kubernetes 给出的解决方案是 Service. 创建 Service Kubernetes Service 从逻辑上代表了一组 Pod,具体是哪些 Pod 则是由 label 来挑选.S…
第一章.前言 在上一篇博客中,我们大致简述了一般情况下资源清单的格式,以及如何获得清单配置的命令帮助,下面我们再讲解下清单中spec字段中比较常见的字段及其含义 第二章.常用字段讲解 spec.containers <[]object> spec.containers <[]object> spec.containers.name <string> #pod的名称,必须字段,名称唯一且对象创建后不可以被修改 spec.containers.image <strin…
一. 创建Redis的deployment和service 1. 创建Redis deployment redis-master-deployment.yaml  apiVersion: apps/v1 # use apps/v1beta2 kind: Deployment metadata: name: redis-master labels: app: redis spec: selector: matchLabels: app: redis role: master tier: backe…
一.通过Service访问Pod 每个Pod都有自己的IP地址,当Controller用新的Pod替换发生故障的Pod时,新Pod会分配到新的IP地址,例如:有一组Pod对外提供HTTP服务,它们的IP很可能发生变化,那么客户端如何找到并访问这个服务呢,Service由此而生.Service从逻辑上代表了一组Pod,具体是哪些则由label来挑选,Service有自己的IP,并且这个IP是不变的,客户端只需要访问Service IP,无论后端Pod如何变化,对客户端访问不会有任何影响,k8s负责…
1.系统配置 centos7.7 docker 1.13.1 centos7下安装docker:https://www.cnblogs.com/pu20065226/p/10536744.html 2.关闭防火墙,selinux,swapoff   systemctl disable firewalld #停止firewall systemctl stop firewalld #禁止firewall开机启动firewall-cmd --state #查看防火墙状态 swapoff -a   #…
service 每个 Pod 都有自己的 IP 地址.当 controller 用新 Pod 替代发生故障的 Pod 时,新 Pod 会分配到新的 IP 地址.这样就产生了一个问题: 如果一组 Pod 对外提供服务(比如 HTTP),它们的 IP 很有可能发生变化,那么客户端如何找到并访问这个服务呢? Kubernetes 给出的解决方案是 Service. 创建 Service Kubernetes Service 从逻辑上代表了一组 Pod,具体是哪些 Pod 则是由 label 来挑选.S…
目录: Pod配置管理:ConfigMap 容器内获取Pod信息:Downward API Pod生命周期和重启策略 Pod健康检查 一.ConfigMap 将应用所需的配置信息与程序进行分离,可以使应用程序更好的被复用,通过不同的配置实现更灵活的功能.如果将应用打包成镜像,再用环境变量或者外挂文件的方式挂载配置,在大型容器集群中会变得异常繁琐,所以出现了统一的配置管理:ConfigMap (1)ConfigMap:容器应用的配置管理 典型用法如下: 1.生成为容器内的环境变量 2.设置容器启动…
前言 TKEx-CSIG 是基于腾讯公有云 TKE 和 EKS 容器服务开发的内部上云容器服务平台,为解决公司内部容器上云提供云原生平台,以兼容云原生.适配自研业务.开源协同为最大特点. 业务容器上云过程中,会遇到一些问题,有的需要业务进行容器化改造,有的需要平台赋能.平台赋能的部分,有一类问题是 CVM 场景下已经有解决方案的,而因运维方式不同在 Kubernetes 平台上不兼容的,比如 Pod 预授权的问题.我们希望用云原生的方式解决这一类问题并提供平台化的能力,让每一位用户都能够在平台上…
目录 docker 网络 Docker 的四种网络模 一.网络基础 1.网络名称空间介绍 2.创建一个命名空间 1)Veth设备对 2)Veth设备操作 1> 创建Veth设备对 2> 绑定命名空间 3> 给tes01内的Veth分配一个IP 4> 为对端Veth设备分配IP 5> 测试互ping bash 6> 补充概念 3.网桥介绍 4.网桥 5.iptables 6.总结 二.四种网络模式(模型) 0.简介 1.HOST模式(主机) 1)案例 2)HOST模式总结…