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,整个数据库 ...
随机推荐
- java继承(implements与extends)总结
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_39938767/article/details/80056922 关键字impl ...
- [SDOI2015][bzoj 3994][Luogu P3327] 约数个数和 (莫比乌斯反演)
题目描述 设d(x)d(x)d(x)为xxx的约数个数,给定NNN.MMM,求 ∑i=1N∑j=1Md(ij)\sum^{N}_{i=1}\sum^{M}_{j=1} d(ij)i=1∑Nj=1∑M ...
- SQL数据库调优
1.使用With As做数据库递归,调优树形表结构 例如:设计表结构简化如:ID.ParentID.Name:这里的ParentID就是这个表本身的某个ID WITH cte AS ( UNION A ...
- 小程序官方基础项目api请求
onLaunch: function () { // 展示本地存储能力 var logs = wx.getStorageSync('logs') || [] logs.unshift(Date.now ...
- java+上传+文件夹
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有 ...
- P2734 游戏 A Game
题目背景 有如下一个双人游戏:N(2 <= N <= 100)个正整数的序列放在一个游戏平台上,游戏由玩家1开始,两人轮流从序列的任意一端取一个数,取数后该数字被去掉并累加到本玩家的得分中 ...
- python去掉字符串中重复字符的方法
If order does not matter, you can use foo = "mppmt" "".join(set(foo)) set() ...
- eclipse中Maven项目启动报错“3 字节的 UTF-8 序列的字节 3 无效。”
发生原因不知道. 解决方法是在pom.xml中追加 <properties> <project.build.sourceEncoding>UTF-8</project.b ...
- Mac下的PHP的配置与运行
mac 下自带apache bogon:Documents macname$ apachectl -version Server version: Apache/ (Unix) Server buil ...
- Tkinter 之Frame标签
一.参数说明 语法 作用 width 设置 Frame 的宽度默认值是 0 height 设置 Frame 的高度默认值是 0 background(bg) 设置 Frame 组件的背景颜色 bord ...