通常一个线上问题的定位流程是: 通过 Metric 发现问题, 根据 Trace 定位到问题模块,根据模块具体的日志定位问题原因。在日志中包括了错误、关键变量、代码运行路径等信息,这些是问题排查的核心,因此日志永远是线上问题排查的必经路径;
原文地址:https://dzone.com/articles/a-service-mesh-for-kubernetes-part-v-dogfood-envir
众所周知,在云原生环境中,我们可以通过 RBAC 机制控制应用对集群中资源的访问权限,但对于生产环境来说,这些还远远不够,当应用可以访问到宿主机的资源(比如 Linux 权能字、网络访问、文件权限)时,宿主机仍然存在安全风险。对于这种情况,Linux 内核安全模块 AppArmor 补充了基于标准 Linux 用户和组的权限,将程序限制在一组有限的资源中,同时也是对 Pod 的保护,使其免受不必要的攻击。
在这篇文章中,我们将通过一个简单的例子来介绍一下Linkerd和Zipkin如何在Kubernetes(Google开源的容器集群管理系统)中协同工作以自动获得分布式跟踪,只需要对应用程序进行一些小小的修改。
原文地址:https://dzone.com/articles/a-service-mesh-for-kubernetes-part-1-top-line-service-metrics
前文已经介绍过了k8s ingress的实现原理和配置,本文将介绍替代方案traefik。在开始配置之前我们先回顾一下ingress发布k8s服务的实现方案,ingress方案需要使用下列的组件:
看到这个标题,你可能会问:什么是服务网格?在云服务广泛应用的现在又如何应用?马上我们就会在本文中将向您展示如何在Kubernetes上使用linkerd作为服务网格。
在本文中,我们将展示如何在不修改当前应用代码的前提下来为所有的服务到服务的(service-to-service) HTTP 调用提供 TLS 支持。
在过去的几年间,社区意识到在容器中运行有状态工作负载的价值,而且像 Kubernetes 这样的编排器引入了必要的特性。
静儿作为美团容器化团队HULK的一员,经常需要和Kubernetes(k8s)打交道。第一次登陆node(宿主机)的时候,发现连续登陆几台都看到了Prometheus-Node-Exporter字样的docker进程。他们和普通的Pod(容器)一样,占用IP等资源,占用宿主机允许的pod数上限。后来通过看书了解到这是DaemonSet控制管理的Pod.
大家好啊,咱们的Kubernetes学习笔记时隔两月终于又迎来了更新,前面咱们介绍的Deployment、Service、Statefulset 相信看过文章的同学都已经明白他们各自的能力和使用场景了,如果已经没啥印象了或者是还没看过的同学,推荐看一下之前讲他们三个的文章。
最简单的一句话来概括Kubernetes。 它就是一套成熟的商用服务编排解决方案。Kubernetes定位在Saas层,重点解决了微服务大规模部署时的服务编排问题。
Navigational sextant by Lars Plöger via Pixabay
应用容器化是部署与迁移的第一步,需要设计并规划好镜像的构建方案,由于Docker镜像分层的特性,通常建议使用分层方式进行Docker镜像构建。
Kubernetes 已成为一个被广泛采用的行业工具,对可观测性工具的需求也在不断增加。为此,OpenTelemetry 创建了许多不同的工具,来帮助 Kubernetes 用户观察他们的集群和服务。
在上一篇文章中我们介绍了如何通过helm进行安装部署traefik组件,文中还提到常用的ingress controller除了traefik还有Nginx、HAProxy、Kong等,在本篇文章中我们就介绍如何安装部署Nginx-ingress,只有在经过积累不同组件的使用经验之后,我们才能更好的比较其优劣,形成最佳实践。
v2-41cd4e0da53d456d5ee31a41ce490067_1200x500.jpg
Calico是一个流行的Kubernetes网络插件,它提供了一个高效的、可扩展的网络层,用于在容器之间进行通信和负载均衡。它是一个开源项目,由Tigera开发和维护,广泛应用于生产环境中。本文将介绍如何在Kubernetes集群中安装和配置Calico网络插件。
在之前的文章已经讲到了很多Kubernets对象,包括pod,service,deployment等等。Kubernets对象是一种持久化,表示集群状态的实体。它是一种声明式的意图的记录,一般使用yaml文件描述对象,它使用Kubernetes对象来表示集群的状态,通过API/kubectl管理Kubernetes对象。
DaemonSet 是K8s中相对特殊的一个控制器,即确保全部节点上运行一个 Pod 的副本。 当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些Pod也会被回收。删除DaemonSet将会删除它创建的所有 Pod。即基于工作节点的单Pod实例,每个节点只跑一个pod
这些配置不应该直接放到容器镜像中,而是应该配配置与容器分离,通过数据卷、环境变量等方式在运行时动态挂载。
(4)通过CCE控制台查看部署。点击控制台中的工作负载—>无状态负载,可以看到创建的工作负载mydep。
深入了解 CSI(Container Storage Interface)是什么以及它如何在 Kubernetes(k8s)中工作。
Pod是k8s系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在k8s上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展Pod对象功能的,比如控制器对象是用来管控Pod对象的,Service或者Ingress资源对象是用来暴露Pod引用对象的,PersistentVolume资源对象是用来为Pod提供存储等等,k8s不会直接处理容器,而是Pod,Pod是由一个或者多个container组成的。
Linkerd的设计目的是使service-to-service的内部通信在应用程序中安全、快速和可靠。然而,这些目标同样适用于edge。在这篇文章中,我们将展示Linkerd的一个新特性,允许它充当Kubernetes入口控制器,并展示它如何在使用和不使用TLS的情况下处理通信流。
本章是kubernetes系列教程第二篇,要深入学习kubernetes,首先需要有一个k8s环境,然而,受制硬件环境,网络环境等因素,要搭建一个环境有一定的困难,让很多初学者望而却步,本章主要介绍通过kubeadm安装工具部署kubernetes集群,考虑到国内网络限制,已将安装镜像通过跳板机下载到本地,方便大家离线安装。
使用 Pod 定义描述了需要运行的容器及其相关配置,Kubernetes 根据这个定义来创建和管理 Pod 的生命周期。
k8s实践(10) -- Kubernetes集群运行原理详解 介绍过kube-scheduler。
近期发布的 JuiceFS CSI Driver v0.18 版本中,我们提供了一种全新的方式访问文件系统,即 JuiceFS 客户端以 Sidecar 方式运行于应用 Pod 中,且客户端与应用同生命周期。
在本文中,我们将了解如何配置Filebeat作为DaemonSet在我们的Kubernetes集群中运行,以便将日志运送到Elasticsearch后端。我们使用Filebeat而不是FluentD或FluentBit,因为它是一个非常轻量级的实用程序,并且对Kubernetes有一流的支持,因此这是十分适合生产的配置。
在 Kubernetes 中,控制器是一种状态机,用于控制 Pod 的具体状态和行为。Kubernetes 中内置了很多种控制器类型,包括:
用户定义Kubernetes的资源对象(例如Deployment、Daemonset 等),配置文件以configmap定义,通过Volumemounts进行挂载 到Pod里,配置文件修改以后,服务可以自动reload加载更新配置。
当你的应用部署到 Kubenetes 后,你很难看到容器内部发生了什么,一旦容器死掉,里面的数据可能就永远无法恢复,甚至无法查看日志以定位问题所在,何况一个应用可能存在很多个实例,用户的一个请求不指定被哪个容器处理了,这使得在 Kubernetes 中对应用进行故障排除较为复杂。在应用之外,由于 Kubernetes 作为基础设施,掌管这整个集群的生死,Kubernetes 的任何故障,必定影响到应用服务的运行,因此监控 Kubernetes 运行状况也至关重要。
在网上搜索规范化的 K8S 的部署架构图画法时,发现了 Redhat 的一篇博客。觉得非常不错,遂翻译分享之。
Deployment的部署可以指定副本Pod分布在多个Node节点上,且每个Node都可以运行多个Pod副本。而DaemonSet呢,它倔强地保证在每个Node上都只运行一个Pod副本。
Pod是kubernets中最基本的工作单元,一个Pod中可以包含一组容器。通常情况,Pod的创建流程是如下所示(以Bare Pod为例):
我们已经了解了 Ingress 资源对象只是一个路由请求描述配置文件,要让其真正生效还需要对应的 Ingress 控制器才行,Ingress 控制器有很多,这里我们先介绍使用最多的 ingress-nginx,它是基于 Nginx 的 Ingress 控制器。
在本文中,我们将向您展示如何使用linkerd作为服务网格,将TLS添加到所有服务到服务的HTTP调用中,而不用修改任何应用程序代码。
我们之前说k8s中使用deployment、statefulset工作负载资源来分别维护无状态和有状态应用。这篇小作文我们会学习如何使用DaemonSet来维护一个守护进程(应用)。
资源配额控制器确保了指定的资源对象始终不会超过配置的资源,能够有效的降低整个系统宕机的机率,增强系统的鲁棒性,对整个集群的稳定性有非常重要的作用。
在TKE集群中,有些组件是以daemonSet或者二进制的方式运行在集群中的节点上,作为了节点上的守护进程。对于这类组件的监控采集,也是支持接入到TKE的云原生监控中。接下来以Docker Daemon为例来描述下接入方案。
Deployment是 Kubernetes 中用于处理无状态服务的资源,而StatefulSet是用于支持有状态服务的资源,这两种不同的资源从状态的角度对服务进行了划分,而 DaemonSet 从不同的维度解决了集群中的问题 — 如何同时在集群中的所有节点上提供基础服务和守护进程。
随着容器技术的迅速发展,Kubernetes 已然成为大家追捧的容器集群管理系统。Prometheus 作为生态圈 Cloud Native Computing Foundation(简称:CNCF)中的重要一员,其活跃度仅次于 Kubernetes, 现已广泛用于 Kubernetes 集群的监控系统中。本文将简要介绍 Prometheus 的组成和相关概念,并实例演示 Prometheus 的安装,配置及使用,以便开发人员和云平台运维人员可以快速的掌握 Prometheus。
K8sService能够提供很强大的功能,通过提供ClusterIP可以作为Pod的对外访问接口,并提供软负载均衡。但是Service的ClusterIP地址只能在集群内部访问,如何让集群外部的用户访
基于解决不同行业、业务应用的可扩展性、可用性等一系列问题,由此而生的微服务架构得到了各大厂商的、组织以及个人的青睐,随之而来便广泛应用于各种行业场景应用中。然而,随着时间的推移,越来越多的问题慢慢地呈现在大众的视野中。
其中,最为核心的问题莫过于微服务分布式性质导致的运行问题,以及带来的 2 个至关重要的挑战:
领取专属 10元无门槛券
手把手带您无忧上云