当前位置: 首页 > news >正文

网站制作北京那种网站2021

网站制作北京,那种网站2021,网络规划设计师报名入口,成都专业做网站公司目录 1. Namespace1) namespace作用2) namespace资源的具体操作 2. Pod1) Pod概述2) Pod资源的具体操作 3. Label1) Label概述2) Label资源的具体操作 4. Deployment1) Deployment概述2) Deployment控制器的具体操作 5. Service1) Service概述2) Service资源的具体操作 1. Name… 目录 1. Namespace1) namespace作用2) namespace资源的具体操作 2. Pod1) Pod概述2) Pod资源的具体操作 3. Label1) Label概述2) Label资源的具体操作 4. Deployment1) Deployment概述2) Deployment控制器的具体操作 5. Service1) Service概述2) Service资源的具体操作 1. Namespace 1) namespace作用 Namespace主要作用实现多套环境的资源隔离或多租户的资源隔离。 ● 多套环境的资源隔离默认情况下kubernetes集群中的所有的Pod都是可以相互访问的。但是在实际中可能不想让两个Pod之间进行互相的访问那此时就可以将两个Pod划分到不同的namespace下。kubernetes通过将集群内部的资源分配到不同的Namespace中可以形成逻辑上的组以方便不同的组的资源进行隔离使用和管理。 ● 多租户的资源隔离可以通过kubernetes的授权机制将不同的namespace交给不同租户进行管理这样就实现了多租户的资源隔离。此时还能结合kubernetes的资源配额机制限定不同租户能占用的资源例如CPU使用量、内存使用量等等来实现租户可用资源的管理。 Kubernetes在启动之后会默认创建几个Namespace ① default所有未指定Namespace的对象都会被分配到default命名空间 ② kube-flannel存放网络插件相关的pod ③ kube-node-lease集群节点之间的心跳维护(节点间通过心跳来确保对方处于运行状态)v1.13开始引入少用 ④ kube-public此命名空间下的所有资源可以被所有人访问包括未认证的用户比较不安全少用 ⑤ kube-system所有由Kubernetes系统创建的资源都位于此命名空间下。 2) namespace资源的具体操作 查看namespace # 查看所有namespace kubectl get ns # 查看某个namespace kubectl get ns ns_name # 查看某个namespace详情 kubectl describe ns ns_name资源限制结合第一部分提到的资源配额机制(CPU使用量、内存使用量等等)即在此处进行设置。 创建namespace kubectl create ns ns_name删除namespace kubectl delete ns ns_name使用yaml文件进行配置 # test-ns.yaml apiVersion: v1 kind: Namespace metadata:name: test-ns再执行创建或删除命令 kubectl create -f test-ns.yaml # 也可以使用apply kubectl delete -f test-ns.yaml总之Namespace实际上就是一种边界用来实现资源的隔离。 2. Pod 1) Pod概述 首先清楚kubernetes的逻辑关系kubernetes本身是集群 -- 集群通过运行程序对外提供服务 -- 程序必须运行在容器中 -- 容器必须存在于Pod中 -- Kubernetes集群通过管理pod控制其中的容器 -- 进而管理其中的程序。 Pod是kubernetes集群进行管理的最小单元。Pod可以认为是容器的封装一个Pod中可以存在一个或者多个容器。 kubernetes在集群启动之后集群中的各个组件也都是以Pod方式运行的。可以通过下面命令查看 kubectl get pods -n kube-system2) Pod资源的具体操作 创建并运行 kubernetes没有提供单独运行Pod的命令都是通过Pod控制器来实现的 命令格式 kubectl run pod控制器名称(自定义) [参数]–image指定pod镜像 –pod指定端口 –namespace指定命名空间不指定的话默认是default命名空间。 kubectl run nginx --imagenginx:1.17.1 --port80 --namespace test-ns查看pod信息 # 查看Pod基本信息 kubectl get pods -n ns_name kubectl get pods -n ns_name -o wide # 查看Pod详细信息 kubectl describe pod pod_name -n ns_nameevents内容用来查错其内容描述了pod内容器的操作。 访问pod # 获取podIP kubectl get pods -n test-ns -o wide # 访问pod curl pod_IP删除指定pod kubectl delete pod pod_name -n ns_name发现删除之后又重新运行了一个新pod。这是pod控制器在发挥作用。查看Pod控制器 kubectl get deployment -n test-nsnginx就是在kubectl run时指定的pod控制器名称。要想彻底删除pod要删除其pog控制器 kubectl delete deployment nginx -n test-ns通过yaml文件进行操作 # test-nginx-pod.aml apiVersion: v1 kind: Pod metadata:name: nginx # Pod名称而非Pod控制器名称namespace: test-ns spec:containers:- image: nginx:1.17.1imagePullPolicy: IfNotPresentname: podports: - name: nginx-portcontainerPort: 80protocol: TCP然后执行其创建和删除命令 kubectl create -f test-nginx-pod.yaml kubectl delete -f test-nginx-pod.yaml3. Label 1) Label概述 Label是kubernetes系统中的一个重要概念。它的作用就是在资源上添加标识用来对它们进行区分和选择。 【例如】现在有两组一堆pod像将它们分为两组一组负责前端一组负责后端对着两组进行分别的管理比如前端的这一组同时创建或同时删除后端同理。 提到分组可能会想到Namespace为这两组pod设置不同的Namespace。但是不同Namespace下的pod无法进行通信但理论上一个网站的前后端应该能正常通信因此无法使用Namespace。 因此可以使用Label(标签)为pod打上标签。再通过标签选择器进行选择带有tier:front标签的pod是前端的pod带有tier:back标签的pod是后端的pod。 因此所谓的标签就是一种标识选择机制。为pod添加标识通过标识对pod进行选择和区分。 Label的特点 一个Label会以key/value键值对的形式附加到各种资源对象(如Node、Pod、Service等等)上一个资源对象可以定义任意数量的Label 同一个Label也可以被添加到任意数量的资源对象上去Label通常在资源对象定义时确定当然也可以在对象创建后动态添加或者删除。 可以通过Label实现资源的多维度分组以便灵活、方便地进行资源分配、调度、配置、部署等管理工作。 一些常用的Label 示例如下 版本标签“version”:“release”, “version”:“stable”…环境标签“environment”:“dev”“environment”:“test”“environment”:“pro”架构标签“tier”:“frontend”“tier”:“backend” 标签定义完毕之后还要考虑到标签的选择这就要使用到Label Selector即Label用于给某个资源对象定义标识Label Selector用于查询和筛选拥有某些标签的资源对象。当前有两种Label Selector 基于等式的Label Selector name slave: 选择所有包含Label中keyname且value“slave的对象。例如标签选择器version release就是选择所有标签为version”:release的pod env ! production: 选择所有包括Label中的key“env且value不等于production的对象。例如标签选择器environment ! dev就是选择所有标签为environment”:“xxx”此时的xxx可以是任意值但不能是不能为dev且键必须为environment。 基于集合的Label Selector name in (master, slave): 选择所有包含Label中的keyname且valuemaster或slave的对象 name not in (frontend): 选择所有包含Label中的keyname且value不等于frontend的对象。 标签的选择条件可以使用多个此时将多个Label Selector进行组合使用逗号,进行分隔即可。例如 nameslaveenv!production name not in (frontend)env!production 2) Label资源的具体操作 为pod打标签 kubectl label pod nginx versionv1.0 -n test-ns也可以给他打多个标签接着上步执行 kubectl label pod nginx tierback -n test-ns更新Pod标签 现在想把版本号从1.0更新到2.0如果直接做如下的修改结果是什么 kubectl label pod nginx versionv2.0 -n test-ns显示version这个键已经有一个值v1.0了提示我们要加上–overwrite(覆盖)。加上–overwrite参数试一下 kubectl label pod nginx versionv2.0 -n test-ns --overwrite查看pod标签 kubectl get pods -n test-ns --show-labels筛选标签 kubectl get pods -n test-ns -l versionv2.0 --show-labels kubectl get pods -n test-ns -l version!v2.0 --show-labels删除标签 kubectl label pod nginx version- -n test-ns通过配置文件对pod进行标签操作 # test-pod-label.yaml apiVersion: v1 kind: Pod metadata:name: nginx-labelnamespace: test-nslabels:version: 3.0env: test spec:containers:- image: nginx:1.17.1name: nginx-podports: - name: nginx-portcontainerPort: 80protocol: TCP然后执行命令 kubectl apply -f test-pod-label.yaml4. Deployment 1) Deployment概述 在kubernetes中Pod是最小的控制单元但是kubernetes很少直接控制Pod一般都是通过Pod控制器来完成的。在kubernetes中Pod控制器的种类有很多每个控制器对应一种应用场景此处只介绍一种Deployment。 Pod控制器用于pod的管理确保pod资源符合预期的状态当pod的资源出现故障时会尝试进行重启或重建pod。 确保pod资源符合预期的状态比如现在需要三个pod来运行nginx程序则告诉DeploymentDeployment会创建出三个pod来运行nginx程序。若其中一个pod运行过程中出现故障宕机了此时只剩下两个pod在运行这并不符合我们预期的状态(3个)。则此时Deployment会迅速对宕机的pod进行重启若重启失败则会删除这个pod重新创建一个新pod来运行nginx程序确保pod资源符合预期的状态。 这也是为什么之前直接删pod删不干净因为不符合预期状态了则Pod控制器会创建一个新的pod来代替我们删除的那个pod。 2) Deployment控制器的具体操作 为了防止之前创建的资源干扰视线在操作Deployment前删除test-ns命名空间下的所有资源 # 删除命名空间 kubectl delete ns test-ns # 创建命名空间 kubectl create ns test-ns创建pod # kubectl run deployment_name [参数] kubectl run nginx-deployment --imagenginx:1.17.1 --port80 --replicas3 -n test-ns–image指定pod内容器要运行的镜像 –port指定要暴漏的端口号 –replicas指定要创建的pod的数量(预期状态)默认为1 –namespace指定pod运行的命名空间。 UP-TO-DATE成功升级的副本数量 AVAILABLE可用副本的数量 查看Deployment信息 # 查看Deployment信息 kubectl get deploy -n test-ns kubectl get deploy -n test-ns -o wide # 查看某个Deployment详细信息 kubectl describe deployment nginx-deployment -n test-ns查看一下标签为runnginx-deployment的pod kubectl get pods -n test-ns -l runnginx-deployment --show-labelsDeployment与Pod建立联系是通过标签LabelDeployment本身包含标签选择器进而得知自己要管理哪些pod。 删除Deployment kubectl delete deployment nginx-deployment -n test-ns注意删除pod控制器其下的所有pod也会被删除。 通过配置文件操作Deployment # test-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deploynamespace: test-ns spec:# pod副本数replicas: 3# Label选择器关联Deployment与podsselector:matchLabels:run: nginx-deploy# Pod模板Deployment所创建的pod的模板template:metadata:labels:run: nginx-deployspec:containers:- image: nginx:1.17.1name: nginxports:- containerPort: 80protocol: TCP然后执行命令 kubectl apply -f test-deployment.yaml5. Service 1) Service概述 上一部分创建了一个副本量为3的pod组如想访问其中一个pod需要知道它的ip端口 kubectl get pods -n test-ns -o wide curl IP端口现在删除这个pod发现Pod控制器有创建了一个新的pod并且它的IP地址也发生了变化。 但我的程序若想对外提供服务需要提供我的IP地址。假如在运行过程中pod宕机了重建之后所对应的IP地址会发生改变然而这对外部是不透明的因此服务会失效。因此虽然每个Pod都会分配一个单独的Pod IP然而却存在如下两问题 ① Pod IP 会随着Pod的重建产生变化 ② Pod IP 仅仅是集群内可见的虚拟IP外部无法访问。 这样对于访问这个服务带来了难度。因此kubernetes设计了Service来解决这个问题。 Service可以看作是一组同类Pod对外的访问接口。借助Service应用可以方便地实现服务发现和负载均衡。 2) Service资源的具体操作 创建集群内部可访问的Service # 1. 暴露Service kubectl expose deploy deployment_name --nameservice_name --typeservice_type --port80 --target-port80 -n namespace_nameexpose暴露操作deploy deployment_name通过Deployment控制器来寻找pod。这是因为pod组随时可能发生变化而这些变化都是通过Deployment控制器管理的如果Service直接寻找pod会存在问题因此实际上是Service指定要暴露Deployment控制器管理中的哪个Pod–nameservice_name指定Service名称–typeservice_type指定Service类型默认是ClusterIP–port80指定端口号(service暴露的端口)–target-port80指定目标端口号(对应pod的端口)-n namespace_name指定操作的命名空间。 kubectl expose deploy nginx-deploy --namenginx-svc1 --typeClusterIP --port80 --target-port80 -n test-ns# 查看Service kubectl get service -n test-ns这里产生了一个CLUSTER-IP这就是service的IP在Service的生命周期中这个地址是不会变动的。可以通过这个IP访问当前service对应的pod curl 10.101.27.64:80创建集群外部也可访问的Service 上面创建的Service的type类型为ClusterIP这个ip地址只用集群内部可访问如果需要创建外部也可以访问的Service需要修改type为NodePort。 kubectl expose deploy nginx-deploy --namenginx-svc2 --typeNodePort --port80 --target-port80 -n test-ns发现此时出现了一对port。其中80端口是暴露给内部的而31115端口是Node节点暴露给集群外部的端口号此时便可通过mater节点IP:31115在外部访问到集群服务。例如在的电脑主机上通过浏览器访问下面的地址http://192.168.12.100:31115/ 删除service kubectl delete svc nginx-svc1 -n test-ns kubectl delete svc nginx-svc2 -n test-ns通过配置文件设置service # test-service.yaml apiVersion: v1 kind: Service metadata:name: nginx-svcnamespace: test-ns spec:# 当type为clusterIP时此下的clusterIP可写可不写。写了就是指定的不写就随机分配clusterIP: 10.101.27.64ports:- port: 80protocol: TCPtargetPort: 80selector:run: nginxtype: ClusterIP然后执行命令 kubectl apply -f test-service.yaml删除service kubectl delete -f test-service.yaml参考B站大学
http://www.w-s-a.com/news/495834/

相关文章:

  • 老电脑做网站服务器网站在线留言如何做
  • 南宁广告公司网站建设小程序源码破解
  • 沛县做网站xlec网站建设开发方式包括哪些方面
  • 山西网站建设 哪家好四川城乡和建设厅网站
  • 有瀑布流的网站小型商城网站
  • 百石网怎么做网站二次开发软件
  • 网站域名是什么东西制作网页哪家好
  • 合肥网站建设团队简述网站内容管理流程
  • 网站广告是内容营销吗wordpress增加背景图片
  • 网站建设技术jsp课程设计响应式布局网站开发
  • 东莞网站排名优化seo套路网站怎么做的
  • 我做网站网络建站一般多少钱
  • 如何快速提升网站关键词排名房地产网站开发毕业设计
  • 做网站 提交源码 论坛sem分析是什么意思
  • 网站建设与部署阿里云大学百度付费推广有几种方式
  • 作品集怎么做网站个人简历模板免费下
  • 工业网站素材重庆关键词自动排名
  • 拖拽式网站建设费用微网站怎么做的好名字
  • 长沙电信网站备案谷歌推广怎么做最有效
  • 网站建设与管理总结报告华为开发者联盟
  • 门诊部网站建设天空建筑网站
  • 扬州市城乡建设网站高端品牌鞋子有哪些牌子
  • 杭州网站建设招聘网长沙网络销售公司
  • 网站制作一年多少钱免费做电子章网站
  • 信誉好的营销网站建设徐州市铜山新区建设局网站
  • 建行网站关于我们山西seo和网络推广
  • 1m带宽做网站怎么样深圳网站建设制作开发公司
  • 网站建设 服务内容 费用郴州网站建设公司哪里有
  • 网站关键词重要性育才网站建设
  • 网络安全形势下怎么建设学校网站wordpress最新主题下载