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

 

posted @ 2019-02-20 10:52  effortsing  阅读(890)  评论(0编辑  收藏  举报