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,整个数据库 ...
随机推荐
- machine learning(15) --Regularization:Regularized logistic regression
Regularization:Regularized logistic regression without regularization 当features很多时会出现overfitting现象,图 ...
- eclipse转到idea过程中的基本设置...
1.在写mapper.xml文件中有许多黄黄绿绿的警告 - 黄色的是没有用idea链接数据库,连上就ok,不连的话,这样:Prefernces ⇒ Editor ⇒ Inspections ⇒ SQL ...
- Core DOM、HTML DOM、XML DOM关系
查看:https://blog.csdn.net/IamChuancey/article/details/78335443
- Python中日志logging模块
# coding:utf-8 import logging import os import time class Logger(object): def __init__(self): # 创建一个 ...
- 使用jQuery快速高效制作网页交互特效第一章JavaScript基础
JavaScript 一.JavaScript概念: JavaScript面向对象事件驱动具有安全性的脚本语言,面向对象 JavaScript特点: 1.解释性语言,边运行边解释 2.和HTML页面实 ...
- Codeforces Round #603 (Div. 2) A,B,C,D【E题待补】
#include<bits/stdc++.h> using namespace std; #define int long long signed main(){ int _; cin&g ...
- 最短路--SPFA及其优化
SPFA Shortest Path Faster Algorithm 最短路径最快算法 算法思想 SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路 ...
- 2019年京东 PHP工程师面试题
1. Apache与Nginx大访问下性能描述正确的是? A.Apache所采用的epoll网络I/O模型非常高效B.Nginx使用了最新的kqueue和select网络I/O模型C.Apache进程 ...
- learning scala extractor object
package com.aura.scala.day01 import scala.util.Random object extractorObject { def main(args: Array[ ...
- 禁止打印调用(python)
原文 : https://cloud.tencent.com/developer/ask/188486 import os, sys class HiddenPrints: def __enter__ ...