• k8s常可能问的问题


    k8s常可能问的问题
    1、为什么要用k8s
    自我修复、pod水平自动伸缩、密钥和配置管理动态对应用进行扩容、缩容
    服务发现、负载均衡
    
    1.1、自我修复
    比如误删pod后会自动创建,用 kind: ReplicationController
    1.2、pod水平自动伸缩 
    这个功能就是根据CPU的使用情况周期性的调整Pod的副本数量
    解释:首先创建HPA     kind: HorizontalPodAutoscaler
    设定目标CPU使用率限额,比如限定一个pod的cpu使用率50%,当超过50%时候,自动伸缩算法就会再创建一个pod分担压力,让cpu处于50%一下状态
    1.3、动态对应用进行扩容、缩容
    首先查看最原始的副本数为1
    扩展为50个
    kubectl scale --replicas=50 deployment/nginx-app
    收缩为30个
    scale --replicas=30 deployment/nginx-app
    滚动镜像
    kubectl set image deployment/nginx-app nginx-app=nginx:1.9.1
    回滚
    查看版本历史
    [root@localhost 101]# kubectl rollout history deployment/nginx-app
    deployment.extensions/nginx-app 
    REVISION  CHANGE-CAUSE
    1         <none>
    2         <none>
    回滚到上一次的版本
    [root@localhost 101]# kubectl rollout undo deployment/nginx-app
    deployment.extensions/nginx-app
    查看回滚状态
    [root@localhost 101]# kubectl rollout status deployment/nginx-app
    1.4、服务发现
    服务发现在微服务架构里,服务之间经常进行通信,服务发现就是解决不同服务之间通信的问题。比如一个nginx的pod,要访问一个mysql服务,就需要知道mysql服务的ip和port,获取ip和port的过程就是服务发现
    service:服务,是一个虚拟概念,逻辑上代理后端pod。众所周知,pod生命周期短,状态不稳定,pod异常后新生成的pod ip会发生变化,之前pod的访问方式均不可达。通过service对pod做代理,service有固定的ip和port,ip:port组合自动关联后端pod,即使pod发生改变,kubernetes内部更新这组关联关系,使得service能够匹配到新的pod。这样,通过service提供的固定clusterip,用户再也不用关心需要访问哪个pod,以及pod是否发生改变,大大提高了服务质量。
    1.5、负载均衡:
    如果pod使用rc创建了多个副本,通过kube-proxy实现负载均衡
    1.6、K8s所有的ip以及作用
    nodeip:是k8s集群中每个节点的物理网卡的ip地址,是真实存在的物理地址,所有属于这个网络的服务器之间都能通过这个网络直接通信,不管它们中是否有部分节点不属于这个集群,这也表明集群之外的节点访问k8s集群之内的某个节点或者tcp/ip服务的时候,必须通过nodeip进行通信
    podip:每个会被分配一个单独的ip,每个pod都提供了一个独立的Endpoint( Pod ip + Container port )以被客户端访问
    clusterip:全局的唯一的虚拟ip,在整个service的声明周期内,一旦创建,就不会改变仅仅作用于service对象,由k8s管理和分配ip地址无法被ping,没有实体网络对象来响应必须结合service port 组成一个具体的通信端口,单独的cluster ip不具备tcp/ip通信协议
    1.7、集群外部访问k8s
    使用域名来实现需要配置ingress,然后kind: Service中name: http-test-ser绑定到kind: Ingress中的serviceName: http-test-ser,如下所示:
    apiVersion: v1
    kind: Service
    metadata:
      name: http-test-ser
    spec:
      ports: 
      - port: 80
        targetPort: 80
      selector:
        name: http-test-dm
    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: grafana
    spec:
      rules:
      - host: prom.zhi.io      
        http:
          paths:
          - path: /
            backend:
              serviceName: http-test-ser
              servicePort: 80
  • 相关阅读:
    推荐大家看 《亵渎》
    vue 过滤器filters的使用以及常见报错小坑(Failed to resolve filter)
    vue 与原生app的对接交互(混合开发)
    vue 3.0使用 BUG解决
    202020211 20209313 《Linux内核原理与分析》第一周作业
    2第一周部分笔记
    Cartographer系列之二——hokuyo激光雷达跑cartographer
    ROS系列之初识gmapping
    Cartographer系列之一——初体验
    SLAM学习资料整理
  • 原文地址:https://www.cnblogs.com/effortsing/p/10405233.html
Copyright © 2020-2023  润新知