k8s集群中service中的port/nodePort/targetPort/hostPort的区别

Service定义了pods的逻辑集合和访问这个集合的策略。Pods集合是通过定义Service时提供的Label选择器完成的Service的引入旨在保证pod的动态变化对访问端透明,访问端只需要知道service的地址,由service来提供代理Service的抽象使得前端客户和后端Pods进行了解耦,支持ClusterIP,NodePort以及LoadBalancer三种类型1.portk8s集群内部服务之间访问service的入口。即clusterIP:port是service暴露在clusterIP上的端口,例如mysql容器暴露了3306端...

阅读全文

Hyper-v配置内网固定IP的虚拟机

本地用的Hyper-v创建的虚拟机,我需要虚拟机IP固定,但是能用主机网卡共享上外网的需求,下面记录下配置方法首先我们需要新增交换机,具体配置如下图接着我们去网络管理里面看看这个虚拟网卡上图VNET就是我创建的网卡,同时我们还需要在我原有上网的网卡中做下配置,我用的WLAN这个网卡,需要勾选允许其他网络通过此计算机的internet来连接,同时家庭网络连接选择我们刚才创建的VNET接着我们去VNET网卡中可以看到默认配置了一个地址192.168.137.1,这个地址我们最好不要修改,我没尝试过,这个是作为一个网关地址接着我们去虚拟机里面设置一下固定地址就...

阅读全文

k8s新增node节点一直notready状态的解决方法

今天在原有的k8s集群上新增一个节点,在使用kubeadmjoin命令增加node节点成功以后,等了5分钟,在master上查看新加节点状态一直是notready状态,然后进行排查在node节点上执行命令查看kubelet日志journalctl -f -u kubelet日志如下:Mar 09 13:52:46 k8s-cpu-node2 kubelet[12975]: E0309 13:52:46.191060   12975&n...

阅读全文

K8s相关组件功能原理介绍

一个K8s集群由master和node节点组成,master和node上分别包含一些组件,那么我们今天就来看下这两部分分别包含什么组件,并进行简单学习一、Naster节点主要包含APIServer、Scheduler、Controllermanager、etcd几大组件。1.APIServer提供其他模块之间的数据交互和通信的枢纽(其他模块通过APIServer查询或修改数据,只有APIServer才直接和etcd进行交互)Kubernetes集群中,APIServer扮演着通信枢纽的位置。APIServer不仅负责和etcd交互(其...

阅读全文

Pod常见状态以及相关问题排查的方式

我们在K8S环境中常见的一些POD状态这里进行罗列,然后根据每种状态来看看对应的解决方案有哪些POD常见有以下几种状态1、PendingPod创建已经提交给k8s,但是因为某种原因不能顺利创建,例如下载镜像慢,调度不成功等故障分析:Pending说明Pod还没有调度到某个Node上面。可以通过kubectldescribepod<pod-name>命令查看到当前Pod的事件,进而判断为什么没有调度。可能的原因包括资源不足,集群内所有的Node都不满足该Pod请求的CPU、内存、GPU等资源2、RunningPod已经绑...

阅读全文

flask异常处理errorhandler的使用方法

在flask中有errorhandler和app_errorhandler两种方法可以捕捉到视图函数中的异常并自定义处理,并终端request请求那我们就来看看他们的区别以及使用方法from . import mainfrom flask import jsonify@main.errorhandler(404)def error_404(error):    response = {'code'...

阅读全文

常见微服务注册中心对比

服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。CAP理论是分布式架构中重要理论    一致性(Consistency) (所有节点在同一时间具有相同的数据)  ...

阅读全文

python微服务框架nameko简单使用教程

nameko是python语言的一个微服务框架,支持通过rabbitmq消息队列传递的rpc调用,也支持http调用nameko采用RabbitMQ作为注册中心,所以使用nameko必须要先安装RabbitMQ我们先用容器来安装RabbitMQ,首先拉取rabbitmq镜像docker pull rabbitmq:management启动rabbitmq容器docker run -d --hostname my-rabbit --name rabbit -p&nbs...

阅读全文

K8S工作负载和POD详解

1.POD容器组在Kubernetes中,pods是能够创建、调度、和管理的最小部署单元,是一组容器的集合,而不是单独的应用容器同一个Pod里的容器共享同一个网络命名空间,IP地址及端口空间。从生命周期来说,Pod是短暂的而不是长久的应用。Pods被调度到节点,保持在这个节点上直到被销毁。1)容器分类InfrastructureContainer:基础容器   用户不可见,无需感知   维护整个Pod网络空间InitContainers:初始化容器,一般用于服务等待处理以及注册P...

阅读全文

微服务和基于Istio架构的服务网格介绍

微服务会将应用程序分解为多个较小的服务组件。与传统的一体化(Monolithic)架构相比,微服务架构将每个微服务视为独立的实体与模块,从根本上有助于简化代码和相关基础架构的维护。应用程序的每个微服务都可以编写在不同的技术堆栈中,并且可以进一步独立地部署、优化和管理。从理论上讲,微服务体系结构特别有利于复杂的大型应用程序的构建,但实际上,它也被广泛用于小型应用程序的构建。微服务架构的好处可以通过不同的技术堆栈开发和部署应用程序中的各个微服务。每个微服务都可以独立优化、部署或扩展。更好的故障处理和错误检测。微服务架构的组件在微服务架构上运行的现代云原生应用...

阅读全文