主页

Nginx Location尾部斜杆特别说明

当访问a.com时,想自动跳转到a.com/test。用nginx怎么实现。 location =/ { return 301 /test; } URL尾部的/需不需要 关于URL尾部的/有三点也需要说明一下。第一点与location配置有关,其他两点无关。 location中的字符有没有/都没有影响。也就是说/user/和/user是一样的。 如果URL结构是https://domain.com/的形式,尾部有没有/都不会造成重定向。因为浏览器在发起请求的时候,默认加上了/。虽然很多浏览器在地址栏里也不会显示/。这一点,可以访问baidu验证一下。 如果URL的结构是https://domain.com/some-dir/。尾部如果缺少/将导致重定向。因...

阅读更多

[转]第9章 应用存储和持久化数据卷 核心知识

本次课程的分享主要围绕以下三个部分: K8s Volume 使用场景 PVC/PV/StorageClass 基本操作和概念解析 PVC+PV 体系的设计与实现原理 Volumes 介绍 Pod Volumes 首先来看一下 Pod Volumes 的使用场景: 场景一:如果 pod 中的某一个容器在运行时异常退出,被 kubelet 重新拉起之后,如何保证之前容器产生的重要数据没有丢失? 场景二:如果同一个 pod 中的多个容器想要共享数据,应该如何去做? 以上两个场景,其实都可以借助 Volumes 来很好地解决,接下来首先看一下 Pod Volumes 的常见类型: 本地存储,常用的有 emptydir/hostpath; 网络...

阅读更多

[转]第8章 应用配置管理

本节课程要点 ConfigMaps 和 Secret 资源的创建和使用; Pod 身份认证的实现和原理; 容器资源、安全、前置校验等配置和使用。 细分为以下八个方面: 需求来源 背景问题 首先一起来看一下需求来源。大家应该都有过这样的经验,就是用一个容器镜像来启动一个 container。要启动这个容器,其实有很多需要配套的问题待解决: 第一,比如说一些可变的配置。因为我们不可能把一些可变的配置写到镜像里面,当这个配置需要变化的时候,可能需要我们重新编译一次镜像,这个肯定是不能接受的; 第二就是一些敏感信息的存储和使用。比如说应用需要使用一些密码,或者用一些 token; 第三就是我们容器要访问集群自身。比如我要访问 kube-apiser...

阅读更多

[转]第7章 应用编排与管理 Job&daemonset

本节课程要点 Job & CronJobs 基础操作与概念解析; DaemonSet 基础操作与概念解析。 Job 需求来源 Job 背景问题 首先我们来看一下 Job 的需求来源。我们知道 K8s 里面,最小的调度单元是 Pod,我们可以直接通过 Pod 来运行任务进程。这样做将会产生以下几种问题: 我们如何保证 Pod 内进程正确的结束? 如何保证进程运行失败后重试? 如何管理多个任务,且任务之间有依赖关系? 如何并行地运行任务,并管理任务的队列大小? Job:管理任务的控制器 我们来看一下 Kubernetes 的 Job 为我们提供了什么功能: 首先 kubernetes 的 Job 是一个管理任务的控制器,它可以...

阅读更多

[转]第6章 应用编排与管理 Deployment

本节课程要点 需求来源; 用例解读; 操作演示以及架构设计。 需求来源 背景问题 首先,我们来看一下背景问题。如下图所示:如果我们直接管理集群中所有的 Pod,应用 A、B、C 的 Pod,其实是散乱地分布在集群中。 现在有以下的问题: 首先,如何保证集群内可用 Pod 的数量?也就是说我们应用 A 四个 Pod 如果出现了一些宿主机故障,或者一些网络问题,如何能保证它可用的数量? 如何为所有 Pod 更新镜像版本?我们是否要某一个 Pod 去重建新版本的 Pod? 然后在更新过程中,如何保证服务的可用性? 以及更新过程中,如果发现了问题,如何快速回滚到上一个版本? Deployment:管理部署发布的控制器 这里就引入了我们今天...

阅读更多

[转]第5章 应用编排与管理 核心原理

本节课程要点 K8s 资源的重要元信息; 使用阿里云服务演示一下如何去修改或查看 K8s 重要元数据; 详细分析控制器模式; 总结控制器模式特点。 资源元信息 1. Kubernetes 资源对象 首先,我们来回顾一下 Kubernetes 的资源对象组成:主要包括了 Spec、Status 两部分。其中 Spec 部分用来描述期望的状态,Status 部分用来描述观测到的状态。 今天我们将为大家介绍 K8s 的另外一个部分,即元数据部分。该部分主要包括了用来识别资源的标签:Labels, 用来描述资源的注解;Annotations, 用来描述多个资源之间相互关系的 OwnerReference。这些元数据在 K8s 运行中有非常重要的作用。后续课程中将会...

阅读更多

[转]第4章 理解pod和容器设计模式

本节课程要点 为什么需要 Pod; Pod 的实现机制; 详解容器设计模式。 为什么需要 Pod 容器的基本概念 现在来看第一个问题:为什么需要 Pod?我们知道 Pod 是 Kubernetes 项目里面一个非常重要的概念,也是非常重要的一个原子调度单位,但是为什么我们会需要这样一个概念呢?我们在使用容器 Docker 的时候,也没有这个说法。其实如果要理解 Pod,我们首先要理解容器,所以首先来回顾一下容器的概念: 容器的本质实际上是一个进程,是一个视图被隔离,资源受限的进程。 容器里面 PID=1 的进程就是应用本身,这意味着管理虚拟机等于管理基础设施,因为我们是在管理机器,但管理容器却等于直接管理应用本身。这也是之前说过的不可变基础设施的一个最佳体现...

阅读更多

[转]第3章 Kubernetes核心概念

本节课程要点 什么是 Kubernetes :介绍 Kubernetes 的主要功能以及能力; Kubernetes 的架构:介绍 Kubernetes 的核心组件,以及介绍它们之间是如何相互互动连接; Kubernetes 的核心概念与核心 API; 什么是 Kubernetes Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译是“舵手”或者“飞行员”。在一些常见的资料中也会看到“ks”这个词,也就是“k8s”,它是通过将8个字母“ubernete ”替换为“8”而导致的一个缩写。 Kubernetes 为什么要用“舵手”来命名呢?大家可以看一下这张图: 这是一艘载着一堆集装箱...

阅读更多