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
k8s常可能问的问题的更多相关文章
- [译]关于Java 字符串最常被问到的十个问题
(说明,该文章翻译自Top 10 questions of Java Strings) 下面是关于Java字符串最常被问到的十个问题 1.怎么去比较字符串?使用==还是使用equals()? 简单来说 ...
- 面试题Redis最常被问到知识点总结
1.什么是redis? redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发.高扩展,大数据存储等一系列的问题而产生的数据库 ...
- Java面试常被问到的题目+解答
第一,anonymousinnerclass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 不行,对于匿名内部类,看到的一句话说的 ...
- 常被问到的十个 Java 面试题
在这篇文章中,我试图收录最有趣和最常见的问题.此外,我将为您提供正确的答案. 接下来,就让我们来看看这些问题. 1. 以满分十分来评估自己——你有多擅长 Java? 如果你并不完全确信你自己或是你对 ...
- [k8s]debug模式启动集群&k8s常见报错集合(on the fly)
debug模式启动-支持sa 集群内(pod访问api)使用443加密 no1 no2 安装flanneld kubelet/kube-proxy m1 安装etcd/ api/contruller/ ...
- vue面试常被问到的问题整理
1.Vue的双向数据绑定原理是什么? 答 : vue是采用数据劫持,并且使用发布-订阅者的开发模式.原理是观察者observer通过Object.defineProperty()来劫持到各个属性的ge ...
- Redis的最常被问到知识点总结
1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库 ...
- 常被问到的八个 Java 面试题
想要找到一份好的工作,面试是少不了的,可能你觉得自己技术应该不错了,但是面试却是一团糟.下面我收集了八个常常被问到的Java面试题. 1. 阐述 Java 7 和 Java 8 的区别. 实话说, ...
- Redis的最常被问到知识点总结 (转)
1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库 ...
随机推荐
- Django --- 与数据库进行交互
目录 1.静态文件配置 1.什么是静态文件 2.为什么用户在浏览器中输入的网址能够访问到响应的资源?有时候不能访问? 3.如果想要访问静态资源怎么做? 4.手动开设静态文件访问资源 5.关于两个sta ...
- 通用分页jsp页面显示
注:本章内容都是在上一篇文章 通用分页后台显示:https://www.cnblogs.com/ly-0919/p/11058942.html 的基础上进行改进,所以有许多的类都在上一篇, 带来不便 ...
- javascript权威指南第15章 使用Canvas绘图
HTML <!DOCTYPE html> <html> <head> <title>canvas</title> </head> ...
- sql server 交集,差集的用法 (集合运算)
概述 为什么使用集合运算: 在集合运算中比联接查询和EXISTS/NOT EXISTS更方便. 并集运算(UNION) 并集:两个集合的并集是一个包含集合A和B中所有元素的集合. 在T-SQL中.UN ...
- js图片上传 的方法
先规划出框架 <div id="AQA" style="width:300px; height:200px; background-color:aquamarine ...
- 16 | “order by”是怎么工作的?
在你开发应用的时候,一定会经常碰到需要根据指定的字段排序来显示结果的需求.还是以我们前面举例用过的市民表为例,假设你要查询城市是“杭州”的所有人名字,并且按照姓名排序返回前1000个人的姓名.年龄. ...
- MongoDB 集群设置集合分片生效及查看集合分片情况
一.设计DB分片与Collection分片 #连接mongos /opt/mongodb/mongodb-linux-x86_64-2.4.8/bin/mongo 127.0.0.1:27017 ...
- Qt进程间通信
Qt 提供了四种进程间通信的方式: 使用共享内存(shared memory)交互:这是 Qt 提供的一种各个平台均有支持的进程间交互的方式. TCP/IP:其基本思想就是将同一机器上面的两个进程一个 ...
- 1829:【02NOIP提高组】自由落体
#include<bits/stdc++.h> using namespace std; double h,s1,v,k,l; int n,ans; int main() { cin> ...
- Spring @RestController、@Controller区别
一.用@Controller,返回的是页面:@Controller加上@ResponseBody,返回的是JSON.XML或其他文本. @Controller @RequestMapping(&quo ...