原创网站开发流程wordpress搭建电商教程

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

原创网站开发流程,wordpress搭建电商教程,dw网站指向邮箱超链接怎么做,wordpress主题vuePod调度策略 一.标签1.什么是标签2.给Pod资源打标签3.给Node节点打标签4.查看标签资源 二.Node选择器1.nodeName(指定Pod调度到指定Node节点)2.nodeSelector(指定Pod调度到具有指定标签的Node节点) 三.亲和性1.Node亲和性-nodeAffinity2.Pod亲和性-pod-Affinity3.Pod反亲和性-p… Pod调度策略 一.标签1.什么是标签2.给Pod资源打标签3.给Node节点打标签4.查看标签资源 二.Node选择器1.nodeName(指定Pod调度到指定Node节点)2.nodeSelector(指定Pod调度到具有指定标签的Node节点) 三.亲和性1.Node亲和性-nodeAffinity2.Pod亲和性-pod-Affinity3.Pod反亲和性-podAntiAffinity 一.标签 1.什么是标签 标签其实就一对 key/value 被关联到对象上比如Pod,标签的使用我们倾向于能够表示对象的特殊特点就是一眼就看出了这个Pod是干什么的标签可以用来划分特定的对象比如版本服务类型等标签可以在创建一个对象的时候直接定义也可以在后期随时修改每一个对象可以拥有多个标签但是key值必须是唯一的。创建标签之后也可以方便我们对资源进行分组管理。如果对pod打标签之后就可以使用标签来查看、删除指定的pod。 在k8s中大部分资源都可以打标签。 2.给Pod资源打标签 创建一个Pod资源定义标签 app:nginx 、env:dev vim test.podapiversion: v1 kind: Pod metadata:name: testlabels:app: nginxenv: dev spec: containers:- name: nginximage: nginxports:- containerPort: 80执行YAML文件创建Pod kubectl apply -f test.pod给Pod打标签 kubectl label pod test releasev1查看Pod标签内容 kubectl get pod test –show-labels3.给Node节点打标签 1.添加env标签针对node1节点 kubectl label nodes node1 envdev2.查看标签 kubectl get nodes node1 –show-labels3.删除env节点标签针对node1节点 kubectl label nodes node1 env-4.查看标签资源 1.查看默认空间下所有Pod资源标签内容 kubectl get pods –show-labels2.查看kube-system命名空间下所有Pod资源标签内容 kubectl get pods -n kube-system –show-labels3.查看默认默认命名空间下标签Keyapp的Pod资源不显示标签内容 kubectl get pods -l app4.查看默认默认命名空间下标签Keyapp的Pod资源并显示标签内容 kubectl get pods -L app5.查看所有命名空间下所有Pod资源的标签内容 kubectl get pods –all-namespaces –show-labels6.查看所有Node节点标签 kubectl get nodes –show-labels二.Node选择器 Node选择器是指我们在创建Pod资源时指定该Pod资源运行在哪台Node节点上默认schedule会根据资源随机调度到一个工作节点但是我们可以通过nodeName、nodeSelector在指定运行到那台Node节点。 1.nodeName(指定Pod调度到指定Node节点) 指定Pod资源调度到指定的Node节点 vim nn-pod.yaml apiVersion: v1 kind: Pod metadata:name: mypodlabels:app: nginxenv: dev spec:nodeName: node1 # 运行在node1节点containers:- name: nginximage: nginximagePullPolicy: IfNotPresentports:- containerPort: 80执行资源文件 kubectl apply -f nn-pod.yaml可以看到Pod调度到了node1节点上 kubectl get pod -owide2.nodeSelector(指定Pod调度到具有指定标签的Node节点) 指定Pod资源调度到具有哪些标签的节点上需要注意 当使用nodeSelector 选择了多个标签会调度到都满足此标签的节点上并非满足其中一个标签 如下配置该Pod资源调度到具有 testtest节点上 vim ns-pod.yaml apiVersion: v1 kind: Pod metadata:name: mypodlabels:app: nginxenv: dev spec:nodeSelector:test: testcontainers:- name: nginximage: nginximagePullPolicy: IfNotPresentports:- containerPort: 80执行资源文件我们查看Pod信息时会发现 当前Pod状态处于Pending 状态就是带决策调度到那台节点上因为我们并没有具有 testtest 的节点下面我们给节点打标签 kubectl label nodes node1 testtest再次查看Pod处于Running状态并调度到了指定节点 kubectl get pods -o wide三.亲和性 1.Node亲和性-nodeAffinity K8S中的Node亲和性是指将Pod调度到特定的节点上的能力通过使用Node亲和性可以将Pod调度到具有特定硬件、软件或其他特定属性的节点上以满足应用程序的需求。 我们可以使用 explain 帮助命令查看 kubectl explain pod.spec.affinity.nodeAffinityprefered软亲和性表示有节点尽量满足这个位置定义的亲和性并不是一个必须的条件。 require硬亲和性表示必须有节点满足这个配置定义的亲和性这是个硬性条件。
1.定义Node硬亲和性示例如下

cat pod-require-affinity.yaml

apiVersion: v1 kind: Pod metadata:name: pod-nginxnamespace: defaultlabels:app: nginxenv: dev spec:affinity:nodeAffinity: # 定义Node亲和性requiredDuringSchedulingIgnoredDuringExecution: # 定义硬亲和性nodeSelectorTerms: - matchExpressions: # 根据标签选择Node- key: env # 定义标签key operator: In # IN:等于values: # 定义标签values(或者关系)- dev # 调度到具有envdev 或者 envtest 的标签Node节点- testcontainers:- name: nginximage: nginximagePullPolicy: IfNotPresentports: - containerPort: 80 执行后并不会创建Pod因为没有满足标签的Node节点给节点打标签 envtest后则会调度到此Node节点上 kubectl label node master1 envtest kubectl get pods2.定义Node软亲和性

cat pod-prefered-affinity.yaml

apiVersion: v1 kind: Pod metadata:name: pod-nginx-preferednamespace: defaultlabels:env: uatapp: nginx spec:affinity:nodeAffinity:preferredDuringSchedulingIgnoredDuringExecution: # 软亲和性- preference:matchExpressions: # 根据标签选择Node- key: zone operator: Invalues:- foo- barweight: 10 # 权重值containers:- name: pod-nginx-preferedimage: nginximagePullPolicy: IfNotPresentports:- containerPort: 80执行后 会看到创建的Pod资源即使没有满足标签的Node节点也会找一台Node创建Pod资源 kubectl apply -f pod-prefered-affinity.yaml kubectl get pods权重值表示weight 是相对权重权重值越高pod被调度到指定的node节点几率就越大 2.Pod亲和性-pod-Affinity Pod亲和性是指将一组Pod调度到同一台物理主机或逻辑分区中的能力。这种亲和性可以用于确保相关的Pod在同一台主机上运行以便它们可以更快地进行通信或者为了提高可靠性以便它们可以共享相同的存储或网络资源。 我们可以使用 explain 帮助命令查看 kubectl explain pod.spec.affinity.podAffinityprefered软亲和性表示有节点尽量满足这个位置定义的亲和性并不是一个必须的条件。 require硬亲和性表示必须有节点满足这个配置定义的亲和性这是个硬性条件。
1、定义两个Pod第二个Pod调度到第一个Pod所在节点上。 第一个Pod资源清单如下

cat pod-podaffinity-1.yaml

apiVersion: v1 kind: Pod metadata:name: pod-affinity-1namespace: defaultlabels:app: nginxenv: devspec:containers:- name: nginximage: nginx第二个Pod资源清单如下

cat pod-podaffinity-2.yaml

apiVersion: v1 kind: Pod metadata:name: pod-affinity-2namespace: defaultlabels:app: nginxenv: dev spec:affinity:podAffinity:requiredDuringSchedulingIgnoredDuringExecution: # 硬亲和性- labelSelector: matchExpressions:- key: app # 定义 Pod的keyoperator: In # In values: - nginx # 定义Pod的value,意思指调度到具有appnginx标签的Pod所在节点topologyKey: kubernetes.io/hostname # 定义Node节点key,用于匹配节点判断是否在同一台服务器containers:- name: busyboximage: busybox:latestimagePullPolicy: IfNotPresentcommand: [sh,-c,sleep 3600]按照顺序执行第二个Pod会调度到第一个Pod所在Node节点上。 kubectl apply -f pod-podaffinity-1.yaml kubectl apply -f pod-podaffinity-2.yaml3.Pod反亲和性-podAntiAffinity 和上面Pod亲和性相反两组Pod不会调度到同一台物理服务器上。 1、定义两个Pod第二个Pod禁止调度到第一个Pod所在节点。 第一个Pod资源清单

cat pod-1.yaml

apiVersion: v1 kind: Pod metadata:name: pod-1namespace: defaultlabels:app: nginxenv: devspec:containers:- name: nginximage: nginx第二个Pod资源清单

cat pod-2.yaml

apiVersion: v1 kind: Pod metadata:name: pod-2namespace: defaultspec:affinity:podAntiAffinity: # Pod反亲和性requiredDuringSchedulingIgnoredDuringExecution:- topologyKey: kubernetes.io/hostnamelabelSelector: # 标签匹配 appnginxmatchExpressions:- key: appoperator: Invalues: - nginxcontainers:- name: nginximage: nginx执行文件两个Pod不会调度到同一个节点 kubectl apply -f pod-1.yaml kubectl apply -f pod-2.yaml