微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐