zoukankan      html  css  js  c++  java
  • k8s实际操作中的小知识点

    1.批量执行yaml文件

    # 把所有要执行的yaml文件放在同一个目录下,并且切换到这个目录下
    kubectl apply -f .
    

    2.利用pod的亲和和反亲和功能把pod调度到不同的node上

    亲和(affinity)和 反亲和(anti-affinity)

    Pod之间亲和和反亲和,你可以通过已经在节点上运行的Pod上的标签来约束你的Pod调度到哪些节点上(而不是通过节点上的标签)。也就是说,如果X上已经在运行一个或多个满足规则Y的Pod,则意味着 “此pod就应该在 X 上运行(如果是反亲和,则不应该)”。 Y表示为LabelSelector,带有可选的关联namespace列表;

    假设,在三节的集群中,Web应用程序需要使用缓存(例如redis)。我们希望Web应用程序尽可能与缓存放在一起。

    这是一个简单的redis部署的yaml片段,三个副本和选择器标签app=store。通过PodAntiAffinity以确保调度程序在每个节点上只运行一个。

    redis这个是使用的反亲和,3个副本,要调度到不含有标签app=store的pod所在node上面。
    假如选择一个node,查看该node上没有含有标签app=store的pod,此时会调度过来一个redis的pod。
    等再调度第二个pod时,上一个node上已经有含有标签app=store的pod了,就不会选择上一个node了,而是选择其他的不含有标签app=store的pod所在的node.
    最终的结果是三个副本的pod,分配到三个不同的node上。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: redis-cache
    spec:
      selector:
        matchLabels:
          app: store
      replicas: 3
      template:
        metadata:
          labels:
            app: store
        spec:
          affinity:
            podAntiAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
              - labelSelector:
                  matchExpressions:
                  - key: app
                    operator: In
                    values:
                    - store
                topologyKey: "kubernetes.io/hostname"
          containers:
          - name: redis-server
            image: redis:3.2-alpine
    

    以下web应用的yaml片段,配置podAntiAffinity和podAffinity告知调度程序其所有副本将与具有选择器标签app=store的pod放一起。这还将确保每个Web程序的副本不在单个节点上共存。

    web这个反亲和跟上面的redis一样,最终实现的结果是每个node上有一个该pod
    web的亲和是说web的pod要跟上述redis的pod调度在同一个node上。 (比如node有5台,redis用了其中三个,web也用了三个,这两者的三个是不是相同的三个。)

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: web-server
    spec:
      selector:
        matchLabels:
          app: web-store
      replicas: 3
      template:
        metadata:
          labels:
            app: web-store
        spec:
          affinity:
            podAntiAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
              - labelSelector:
                  matchExpressions:
                  - key: app
                    operator: In
                    values:
                    - web-store
                topologyKey: "kubernetes.io/hostname"
            podAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
              - labelSelector:
                  matchExpressions:
                  - key: app
                    operator: In
                    values:
                    - store
                topologyKey: "kubernetes.io/hostname"
          containers:
          - name: web-app
            image: nginx:1.12-alpine
    
  • 相关阅读:
    weblogic---- Remote远程调用
    weblogic的web.xml报错----Malformed UTF-8 char -- is an XML encoding declaration missing
    jar、war、ear
    weblogic报错----Received exception while creating connection for pool "TDMSKD": The Network Adapter could not establish the connection
    Weblogic java生成wlfullclient.jar
    Tomcat8-windows不能在本地计算机启动tomcat,有更多的信息,查阅系统事件日志。
    jdk历史各个版本下载
    分享一个很有意思的环境探针
    Spring+SpringMVC+MyBatis+easyUI整合进阶篇(七)一次线上Mysql数据库崩溃事故的记录
    说卸载英雄联盟的人真的不是矫情
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/14703647.html
Copyright © 2011-2022 走看看