Kubernetes
文章平均质量分 65
K8s
redrose2100
Python开发工程师/DevOps工程师/测试开发工程师
展开
-
Kubernetes----基于kubeadm工具在CentOS7.9虚拟机上部署一主两从类型的1.26版本的Kubernetes集群环境
配置完成后,分别在master节点上ping node1和node2,在node1节点上ping master和node2,在node2节点上ping master和node1节点,若均能ping通,则表示地址解析配置成功。然后编辑配置文件,将配置文件中namespace修改为 kube-system,子网范围也需要配置跟前面k8s初始化的时候一致,比如这里是 10.240.0.0/16,修改完成后,就可以执行如下命令了。配置完成后,可分别在三台虚拟机上执行date命令,大概确认时间是否已保持一致。原创 2023-10-11 20:34:38 · 375 阅读 · 2 评论 -
Kubernetes----基于kubeadm工具在CentOS7.9虚拟机上部署一主两从类型的Kubernetes集群环境
配置完成后,分别在master节点上ping node1和node2,在node1节点上ping master和node2,在node2节点上ping master和node1节点,若均能ping通,则表示地址解析配置成功。环境规划信息如下,准备三台虚拟机,虚拟机的资源配置根据自身资源情况配置,最好设置2核以上,内存4G以上,磁盘50G以上,当然资源越多越好。稍微等待一两分钟,再次在master节点上查看集群节点状态,如下所示,此时master、node1、node2节点状态均为Ready状态了。原创 2023-09-06 01:33:31 · 368 阅读 · 0 评论 -
Kubernetes----k8s中的Java应用如何将5005端口开放给开发人员调试用
在使用k8s部署Java应用的时候,当Java应用出现异常时,Java开发人员希望通过在IDE中配置远程调试功能,通常情况下Java开发人员会打开5005端口供远端调试,但是在k8s部署应用的环境下,如何将pod中应用的5005端口暴露出来呢?(2)然后通过pod-forward命令将pod容器中的5005端口映射出来。(3)然后即可通过k8s的集群master节点ip:5005 进行远端调试了。(1) 首先查看pod应用的id。原创 2023-04-19 16:47:03 · 494 阅读 · 0 评论 -
MySQL----使用Kubernetes集群环境部署MySQL数据库
【原文链接】1 编写 mysql.yaml文件编写yaml如下apiVersion: v1kind: Namespacemetadata: name: devops # Namespace 的名称---apiVersion: apps/v1kind: Deploymentmetadata: name: devops-mysql # deployment控制器名称 namespace: devopsspec: replicas: 1 revisionHist原创 2022-05-25 16:15:24 · 449 阅读 · 0 评论 -
Kubernetes----Kubernetes学习从入门到实战循序渐进系列篇
Kubernetes----Kubernetes的产生背景与简介Kubernetes----Kubernetes组件简介及相关概念Kubernetes----Kubernetes常用插件简介Kubernetes----Kubernetes集群环境搭建Kubernetes----Kubernetes集群环境配置在Node节点或普通用户使用kubectl命令Kubernetes----Kubernetes中Namespace名字空间的简介与应用Kubernetes----..原创 2022-05-24 00:08:05 · 489 阅读 · 0 评论 -
Kubernetes----CentOS7安装单机版Kubernetes
1 关闭防火墙服务systemctl stop firewalldsystemctl disable firewalld2 安装etcd和Kubernetesyum install -y etcd kubernetes3 修改 /etc/sysconfig/docker配置文件 vi /etc/sysconfig/dockerOPTIONS内容修改如下,其他内容保持不变:# OPTIONS='--selinux-enabled --log-driver=journald --signa原创 2022-04-24 14:32:01 · 1588 阅读 · 1 评论 -
Kubernetes----Kubernetes中通过指令式对象配置的方式管理对象
一、创建对象编写deployment.yaml文件,内容如下:apiVersion: v1kind: Namespacemetadata: name: dev---apiVersion: apps/v1kind: Deploymentmetadata: name: nginx namespace: devspec: replicas: 1 selector: matchLabels: run: nginx template: metada原创 2022-04-12 15:41:54 · 254 阅读 · 0 评论 -
Kubernetes----Kubernetes中通过指令式命令的方式方式管理对象
一、创建对象如下,创建dev命令空间[root@master object_manage]# kubectl create namespace devnamespace/dev created[root@master object_manage]#如下命令为创建一个deployment[root@master object_manage]# kubectl create deployment nginx --image nginx -n devdeployment.apps/nginx cr原创 2022-04-12 15:15:23 · 256 阅读 · 0 评论 -
Kubernetes----Kubernetes中三种对象管理方式对比
kubectl 命令行工具支持多种不同的方式来创建和管理 Kubernetes 对象一、Kubernetes对象管理方式二、指令式命令使用指令式命令时,用户可以在集群中的活动对象上进行操作。用户将操作传给 kubectl 命令作为参数或标志。这是开始或者在集群中运行一次性任务的推荐方法。因为这个技术直接在活跃对象 上操作,所以它不提供以前配置的历史记录2.1 指令式命令与对象配置相比的优点命令简单,易学且易于记忆。命令仅需一步即可对集群进行更改。2.2 指令式命令与对象配置相比的缺点原创 2022-04-12 14:44:21 · 263 阅读 · 0 评论 -
Kubernetes----Kubernetes常用插件简介
一、网络和网络策略ACI通过 Cisco ACI 提供集成的容器网络和安全网络。Antrea在第 3/4 层执行操作,为 Kubernetes 提供网络连接和安全服务。Antrea 利用 Open vSwitch 作为网络的数据面。Calico是一个安全的 L3 网络和网络策略驱动。Canal结合 Flannel 和 Calico,提供网络和网络策略。Cilium是一个 L3 网络和网络策略插件,能够透明的实施 HTTP/API/L7 策略。 同时支持路由(routing)和覆盖/封装原创 2022-04-12 10:53:53 · 1508 阅读 · 0 评论 -
Kubernetes----Kubernetes组件简介及相关概念
一、控制平面组件(Control Plane Components)控制平面的组件对集群做出全局决策(比如调度),以及检测和响应集群事件(例如,当不满足部署的 replicas 字段时,启动新的 pod)。控制平面组件可以在集群中的任何节点上运行。 然而,为了简单起见,设置脚本通常会在同一个计算机上启动所有控制平面组件, 并且不会在此计算机上运行用户容器。1.1 kube-apiserverAPI 服务器是 Kubernetes 控制面的组件, 该组件公开了 Kubernetes API。 API原创 2022-04-12 10:42:11 · 350 阅读 · 0 评论 -
Kubernetes----配置Secret存储
一、Secret实例演示在kubernetes中,还存在一种configmap非常类似的对象,称为Secret对象,它主要用户存储敏感信息,例如密码,密钥、证书等等1.1 首先使用base64对数据进行编码如下,将admin和admin123使用base64编码[root@master volume]# echo -n 'admin' | base64YWRtaW4=[root@master volume]# echo -n 'admin123' | base64YWRtaW4xMjM=[r原创 2022-04-11 15:36:45 · 516 阅读 · 0 评论 -
Kubernetes----ConfigMap配置存储
一、ConfigMap实例演示ConfigMap是一种比较特殊的存储卷,它的主要作用是用来存储配置信息的1.1 创建configmap编写configmap.yaml文件,内容如下:apiVersion: v1kind: Namespacemetadata: name: dev---apiVersion: v1kind: ConfigMapmetadata: name: configmap namespace: devdata: info: | userna原创 2022-04-11 14:11:36 · 771 阅读 · 0 评论 -
Kubernetes----PV和PVC的生命周期简介
一、PV和PVC生命周期简介PV和PVC的生命周期见下图PV和PVC是一一对应的,PV和PVC之间的相互作用遵循一下生命周期:资源供应管理员手动创建底层存储和PV资源绑定用户创建PVC,Kubernetes负责根据PVC声明去寻找PV,并绑定在用户定义好PVC之后,系统将根据PVC对存储资源的请求在已存在的PV中选择一个满足条件的一旦找到,就将该PV与用户定义的PVC进行绑定,用户的应用就可以使用这个PC了如果找不到,PVC则会无限期处于Pending状态,知道等到系统管理员创建了一个原创 2022-04-11 00:14:09 · 835 阅读 · 0 评论 -
Kubernetes----高级存储之PVC
一、PVC简介PVC是资源的申请,用来声明对存储空间、访问模式、存储类别需求信息,如下为PVC的资源文件apiVersion: v1kind: PersistentVolumeClaimmetadata: name: pvc namespace: devspec: accessModes: # 访问模式 selector: # 采用标签对PV选择 storageClassName: # 存储类别 resources: # 请求空间 requests:原创 2022-04-10 18:25:29 · 1688 阅读 · 0 评论 -
Kubernetes----高级存储之PV
一、PV简介1.1 PV资源文件apiVersion: v1kind: PersistentVolumemetadata: name: pv2spec: nfs: # 存储类型,与底层真正存储对应 capacity: # 存储能力,目前只支持存储空间的设置 storage: 2Gi accessModes: # 访问模式 storageClassName: # 存储类别 persistentVolumeReclaimPolicy: # 回收策略PV的原创 2022-04-09 10:31:50 · 471 阅读 · 1 评论 -
Kubernetes----高级存储之PV和PVC简介
一、PV和PC简介Kubernetes支持的存储系统非常多,NFS只是其中一种,为了能够屏蔽底层存储实现细节,方便用户使用,Kubernetes引入了PV和PVC两种资源对象PV(Persistent Volume)是持久化卷的意思,是对底层的共享存储的一种抽象,一般情况下PV由Kubernetes管理员进行创建和配置,它与底层具体的共享存储技术有关,并通过插件完成与其共享存储的对接PVC(Persistent Volume Claim)是持久化卷声明的意思,是用户对于存储需求的一种声明,换句话说,P原创 2022-04-08 00:24:48 · 730 阅读 · 0 评论 -
Kubernetes----NFS类型的基本存储
一、基础准备首先参照 DevOps技术----安装部署NFS服务器 在master节点搭建nfs服务器然后在node节点执行如下命令安装nfs-utils工具包,注意node节点不需要启动nfs,安装工具包只是为了能驱动nfsyum install -y nfs-utils二、NFS实例演示编辑nfs.yaml文件,内容如下:apiVersion: v1kind: Namespacemetadata: name: dev---apiVersion: v1kind: Podm原创 2022-04-08 00:07:30 · 1382 阅读 · 0 评论 -
Kubernetes----HostPath类型的基本存储
一、HostPath简介EmptyDir中的数据不会被持久化,它会随着Pod的结束而销毁,如果想简单的将数据持久化到主机中,可以选择HostPathHostPath就是将Node主机中的一个实际目录挂载到Pod中,以供容器使用,这样的设计就可以保证Pod销毁了,但是数据可以存在Node主机上二、HostPath实例演示如下,将Node节点上一个目录挂载到pod中,这样当pod销毁时,数据仍然存在,即做到了持久化存储编辑hostpath.yaml文件,内容如下:apiVersion: v1ki原创 2022-04-07 21:50:23 · 3089 阅读 · 0 评论 -
Kubernetes----EmptyDir类型的基本存储
一、EmptyDir简介EmptyDir是最基础的Volume类型,一个EmptyDir就是Host上一个空目录EmptyDir是在Pod被分配到Node时创建的,它的初始内容为空,并且无需指定宿主机上对应的目录文件,因为Kubernetes会自动分配一个目录,当pod销毁时,EmptyDir中的数据也会被永久删除EmptyDir的用途如下:临时空间,例如用于某些应用程序运行时所需要的临时目录,且无需永久保留一个容器需要从另一个容器中获取数据的目录(多容器共享目录)二、EmptyDir应用实原创 2022-04-07 01:29:52 · 4719 阅读 · 0 评论 -
Kubernetes----ExternalName类型的Service
一、ExternalName类型Service简介externalName Service是k8s中一个特殊的service类型,它不需要指定selector去选择哪些pods实例提供服务,而是使用DNS CNAME机制把自己CNAME到你指定的另外一个域名上,你可以提供集群内的名字,比如mysql.db.svc这样的建立在db命名空间内的mysql服务,也可以指定http://mysql.example.com这样的外部真实域名。二、ExternalName类型Service实例编辑external原创 2022-04-06 23:36:34 · 4350 阅读 · 0 评论 -
Kubernetes----NodePort类型的Service
一、NodePort类型的Service简介ClusterIP类型和Headless类型的Service都只能在集群环境内部访问,如果想开放给集群环境以外访问,那就需要使用NodePort类型,NodePort的工作原理其实就是将service的端口映射到Node的端口上,然后通过NodeIP:NodePort 来访问Service二、环境准备编写deployment.yaml文件,内容如下:apiVersion: v1kind: Namespacemetadata: name: dev原创 2022-04-05 11:27:55 · 2031 阅读 · 0 评论 -
Kubernetes----HeadLess类型的Service
一、Headless类型Service简介在某些场景下,开发人员可能不想使用Service提供的负载均衡功能,而希望自己来控制负载均衡策略,针对这种情况,Kubernetes提供了Headless Service,这类Service不会分配ClusterIP,如果想要访问Service,只能通过service的域名进行查询二、环境准备编写deployment.yaml文件,内容如下:apiVersion: v1kind: Namespacemetadata: name: dev---原创 2022-04-04 12:20:48 · 1709 阅读 · 3 评论 -
Kubernetes----部署单节点Redis
一、创建ConfigMap(1)首先创建命名空间kubectl create namespace ospp(2)编写redis-config.yaml文件,内容如下:apiVersion: v1kind: ConfigMapmetadata: name: redis-config namespace: ospp labels: app: redisdata: redis.conf: |- dir /srv port 6379 bind 0.0.原创 2022-04-02 00:48:28 · 2013 阅读 · 0 评论 -
Kubernetes----ClusterIP类型的Service
一、环境准备编写deployment.yaml文件,内容如下:apiVersion: v1kind: Namespacemetadata: name: dev---apiVersion: apps/v1kind: Deploymentmetadata: name: pc-deployment namespace: devspec: replicas: 3 selector: matchLabels: app: nginx-pod templa原创 2022-04-01 23:39:31 · 2678 阅读 · 0 评论 -
Kubernetes----服务Service简介
一、Service简介在Kubernetes中,pod是应用程序的载体,我们可以通过pod的ip来访问应用程序,但是pod的ip地址不是固定的,这就意味着不方便直接采用pod的ip对服务进行访问为了解决这个问题,Kubernetes提供了Service资源,Service会对提供同一个服务的多个pod进行整合,并且提供一个统一的入口地址,通过访问Service的入口地址就能访问到后面的pod的服务Service在很多情况下只是一个概念,真正起作用的其实是kube-proxy服务进程,每个node节点原创 2022-04-01 22:08:25 · 662 阅读 · 0 评论 -
Kubernetes----CronJob控制器
一、CronJob控制器简介1.1 CronJob控制器简介CronJob控制器以Job控制器为其管控对象,并借助它管理pod资源对象,job控制器定义的作业任务在其控制器资源创建后便会立即执行,但CrobJob可以以类似与Linux操作系统的周期性任务作业的方式控制其运行时间点及重复运行的方式,也就是说,CronJob可以在特定的时间点反复的去运行Job任务1.2 CronJob控制器的资源清单文件:apiVersion: batch/v1betal # 版本号kind: CronJob原创 2022-04-01 01:03:53 · 652 阅读 · 0 评论 -
Kubernetes----Job控制器
一、Job控制器简介1.1 Job控制器简介Job,主要用于负责批量处理短暂的一次性任务,Job特点如下:当Job创建的Pod执行成功时,job将几乎成功结束的pod数量当成功结束的pod达到指定的数量时,job将完成执行1.2 Job控制器资源文件......原创 2022-03-31 23:27:44 · 741 阅读 · 0 评论 -
Kubernetes----DevOps应用----部署gitlab-runner
一、安装helm工具(1)下载软件包wget https://get.helm.sh/helm-v3.8.0-linux-amd64.tar.gz(2)解压并拷贝文件位置tar -zxvf helm-v3.8.0-linux-amd64.tar.gzmv linux-amd64/helm /usr/local/bin/helm这里需要注意的是将 /usr/local/bin 添加到环境变量中二、配置chart存储库(1)添加chart存储库helm repo add gitlab h原创 2022-03-30 01:22:21 · 475 阅读 · 0 评论 -
Kubernetes----DaemonSet控制器
一、DaemonSet控制器简介1.1 DaemonSet控制器简介DaemonSet类型的控制器可以保证集群中的每一台(或者指定)节点上都运行一个副本,一般使用与日志收集节点监控等场景,也就是说,如果一个pod提供的功能是节点级别的(每个节点都需要且只需要一个),name这里pod就适合使用DaemonSet类型的控制器创建DaemonSet控制器特点每当向集群中添加一个节点是,指定的pod副本也将添加到该节点当节点从集群中移除时,pod也就被垃圾回收了1.2 DaemonSet控制资源原创 2022-03-28 00:14:23 · 220 阅读 · 0 评论 -
Kubernetes----HPA控制器实现动态弹性扩缩容
一、HPA控制器简介HPA(Horizontal Pod Autoscaler)控制器可以获取pod利用率,然后和HPA中定义的指标进行对比,同时计算出需要伸缩的具体值,最后实现pod的数量的调整,其实HPA与之前的Deployment一样,也属于一种Kubernetes对象,它通过追踪分析目标pod的负载变化情况,类确定是否需要针对性地调整目标pod的副本数二、HPA控制器环境准备2.1 安装metric-server(1)参照 Git----安装(CentOS) 首先安装git工具(2)下载原创 2022-03-27 19:57:07 · 1603 阅读 · 0 评论 -
Kubernetes----Deployment控制器实现版本金丝雀发布
一、金丝雀发布的由来及含义1.1 金丝雀发布的由来金丝雀发布有名灰度发布。起源于17世纪,英国矿井工人发现,金丝雀对瓦斯这种气体十分敏感。空气中哪怕有极其微量的瓦斯,金丝雀也会停止歌唱;而当瓦斯含量超过一定限度时,虽然人类毫无察觉,金丝雀却早已毒发身亡。当时在采矿设备相对简陋的条件下,工人们每次下井都会带上一只金丝雀作为“瓦斯检测指标”,以便在危险状况下紧急撤离。1.2 金丝雀发布的含义在金丝雀发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新原创 2022-03-26 22:26:58 · 1451 阅读 · 0 评论 -
Kubernetes----Deployment控制器实现版本回退
一、版本升级过程的变化原理编辑pc_deployment.yaml文件,内容如下:apiVersion: v1kind: Namespacemetadata: name: dev---apiVersion: apps/v1kind: Deploymentmetadata: name: pc-deployment namespace: devspec: replicas: 3 strategy: type: RollingUpdate rollingU原创 2022-03-26 21:59:33 · 873 阅读 · 0 评论 -
Kubernetes----Deployment控制器实现版本滚动发布
一、镜像更新策略简介Deployment控制器支持两种镜像更新策略:重建更新和滚动更新(默认),可以通过strategy字段进行配置配置资料如下:strategy: # 指定新的Pod替换旧的Pod的策略,支持两个属性 type: # 指定策略类型,支持两种策略 Recreate: # 在创建出新的额Pod之前会先杀掉所有已存在的Pod RollingUpdate: # 滚动更新,就是杀死一部分,就启动一部分,在更新的过程中,存在两个版本的Pod,可以做到业务无中原创 2022-03-26 20:47:17 · 1185 阅读 · 0 评论 -
Kubernetes----Deployment控制器
一、Deployment控制器1.1 Deployment控制器简介Deployment控制器并不是直接管理Pod,而是通过管理ReplicaSet来间接管理Pod,即Deployment管理ReplicaSet,ReplicaSet管理Pod,所以Deployment比ReplicaSet功能更加强大Deployment控制器主要功能又如下几个:支持ReplicaSet所有功能支持发布的停止、继续支持版本滚动升级和版本回退1.2 Deployment的资源清单文件deployment原创 2022-03-26 19:43:13 · 601 阅读 · 0 评论 -
Kubernetes----ReplicaSet控制器
一、ReplicaSet控制器简介1.1 ReplicaSet控制器简介ReplicaSet控制器的主要作用是保证一定数量的pod能能够正常运行,它会持续监听这些pod的运行状态,一旦pod发生故障,就会重启或重建,同时它还支持对pod数量的扩缩容和版本镜像的升级1.2 ReplicaSet控制资源清单文件apiVersion: apps/v1 # 版本号kind: ReplicaSet # 类型metadata: # 元数据 name: # rs名称 name原创 2022-03-26 12:10:26 · 586 阅读 · 0 评论 -
Kubernetes----Pod控制器简介
一、Pod控制器简介1.1 什么是Pod控制器在Kubernetes中,按照Pod的创建方式可以将其分为两类:自主式Pod:Kubernetes直接创建出来的pod,这种pod删除后就没有了,也不会重建控制器创建的Pod,通过控制器创建的Pod,这种pod删除之后会自动创建Pod控制器就是管理Pod的中间层,使用了pod控制器之后,我们只需要告诉pod控制器,想要多少个什么样的pod就可以了,它就会创建出满足条件的pod并确保每一个pod处于用户期望的状态,如果Pod在运行中出现故障,控制器会原创 2022-03-26 10:36:21 · 400 阅读 · 0 评论 -
Kubernetes----Pod配置污点和容忍
一、污点简介1.1 污点简介亲和性调度的方式都是站在Pod的角度上,通过在Pod上增肌属性来将Pod调度到到指定的节点上,其实也可以站在Node节点的角度上,通过给Node节点设置属性,来决定是否允许Pod调度过来,这就是污点Node被设置上污点之后就和Pod存在了一种相斥的关系,进而拒绝Pod调度进来,甚至可以将已经存在的Pod驱逐出去污点的格式为 key=value:effect,key和value是污点的标签,effect描述五点多额作用,支持如下三个选项PreferNoSchedule:原创 2022-03-26 00:03:12 · 2305 阅读 · 0 评论 -
Kubernetes----Pod亲和性调度
一、亲和性调度简介1.1 亲和性简介亲和性调度是指通过配置的形式,实现优先选择满足条件的Node进行调度,如果没有,也可以调度到不满足条件的节点上,使调度更加灵活亲和性(Affinity)主要分为三类:节点亲和性(nodeAffinity):以node为目标,解决pod可以调度到哪些node的问题pod亲和性(podAffinity):以pod为目标,解决pod可以和哪些已经存在pod部署到同一个拓扑域中的问题pod反亲和性(podAntiAffinity):以pod为目标,解决pod不能和哪原创 2022-03-25 23:14:49 · 1585 阅读 · 0 评论 -
Kubernetes----Pod定向调度
一、Pod调度简介1.1 调度简介在默认情况下,一个Pod在哪个Node节点上运行,是由scheduler组件采用相应的算法计算出来的,这个过程是不受人工控制的,但是在实际使用中,这并不满足要求,因为在很多情况下,我们想控制某些Pod在某些某些节点上,这就要求Kubernetes能对Pod进行调度,Kubernetes提供了四种调度方式自动调度:由scheduler计算得出定向调度:NodeName,NodeSelector亲和性调度:NodeAffinity,PodAffinity,PodAn原创 2022-03-24 23:28:21 · 1344 阅读 · 0 评论