kubenets
子知识库
文章
01.简介
Kubernetes概述什么是Kubernetes随着微服务架构被越来越多的公司使用,大部分单体应用正逐步被拆解成小的、独立运行的微服务。微服务的优势这里不做探讨,但是其带来的服务维护问题大大增加,若想要在管理大量微服务的情况下同时还做到以下几点: 让资源利用率更高 让硬件成本相对更低 Kubernetes是一个可以移植、可扩展的开源平台,使用 声明式的配置 并依据配置信息自动地执行容器化应用程序的管理。在所有的容器编排工具中(类似的还有 docker swarm / mesos等),Kubernetes的生态系统更大、增长更快,有更多的支持、服务和工具可供用户选择。于是就自然而然地就产生了基于容器自动化部署微服务的需求,在容器编排这块的纷争,各大巨头参与,战况惨烈,但最终胜出的是谷歌的Kubernetes[^1],其提供的特性有: 服务发现和负载均衡 服务编排和容器调度 发布部署:滚动升级、回滚 自动伸缩:扩容缩容和重启 自愈 密钥及配置管理 Kubernetes构成通过下面架构图可以看到其有上下两部分对应的Master&Node节点构成,这两种角...
02.安装
# Kubernetes ## minikube 1. 安装步骤https://minikube.sigs.k8s.io/docs/start/ 2. 启动k8s集群 1minikube start 3. 启动仪表盘 1minikube dashboard 4. 查看启动插件 12345678910111213141516171819202122232425262728293031323334353637383940414243444546minikube addons list addon-manager: enabled dashboard: enabled default-storageclass: enabled efk: disabled freshpod: disabled gvisor: disabled helm-tiller: disabled ingress: disabled ingress-dns: disabled logviewer: disabled metrics-server: disabled nvidi...
03.入门
基础概念介绍俗话说,磨刀不误砍柴工。上一章,我们成功搭建了k8s集群,接下来我们主要花时间了解一下k8s的相关概念,为后续掌握更高级的知识提前做好准备。 本文主要讲解以下四个概念: Pod Deployment Service Namespace 1 引入让我们使用 Deployment运行一个无状态应用来开启此章节吧,比如运行一个 nginx Deployment(创建文件:nginx-deployment.yaml): 123456789101112131415161718192021apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deployment labels: app: nginxspec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: ...
04-1.POD
1 概念 是什么 Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。 一个Pod封装一个或多个多个容器,存储资源、一个独立的网络IP以及管理控制容器运行方式的策略选项。 Pod代表部署的一个单位:Kubernetes中单个应用的实例,它可能由单个容器或多个容器共享组成的资源。 两种工作模式kubernetes中pod使用的两种方式 单容器模式:Pod中运行一个容器。“one-container-per-Pod”模式是Kubernetes最常见的用法; 在这种情况下,你可以将Pod视为单个封装的容器,但是Kubernetes是直接管理Pod而不是容器。 多容器模式:Pods中运行多个需要一起工作的容器。Pod可以封装紧密耦合的应用,它们需要由多个容器组成,它们之间能够共享资源,这些容器可以形成一个单一的内部service单位 -(类似docker swam?) 一个容器共享文件,另一个“sidecar”容器来更新这些文件。Pod将这些容器的存储资源作为一个实体来管理。 多容器模式Pods的设计可用于支持多进程的协...
04-2.Service
1 基本介绍概念在Kubernetes中,Pod中的网络是隔离的,而且IP随着pod的的变化而变化。 Kubernetes中抽象出来一个Service服务发现机制(只支持四层负载均衡,即通过IP端口转发)。Service为Pods提供了一个稳定的IP地址和DNS名称,以便其他应用程序可以通过这些标识符来访问该服务。 它还提供了负载均衡和服务发现的能力,可以将流量路由到一组具有相同标签的Pods中。 工作原理Service 被赋予一个唯一的 dns name。Service 通过 label selector 选定一组 Pod。Service 实现负载均衡,可将请求均衡分发到选定这一组 Pod 中 底层实现 域名的解析以来DNS组件。 kubernetes 的 dns 服务 (不同 kubernetes 版本的 dns 默认使用的也是不一样的,1.11 之前的版本使用的是 kubeDNS,较新的版 本使用的是 coredns) 每 个 K8s 节点上都有一个组件叫做 kube-proxy,kube-proxy 这个组件通过 watch(监视) 方法将始终监视着 apiserver...
04-4.StatefulSet
在 Kubernetes 1.7 及之后的版本中,可以为 StatefulSet 设定 .spec.updateStrategy 字段,以便您可以在改变 StatefulSet 中 Pod 的某些字段时(container/labels/resource request/resource limit/annotation等)禁用滚动更新。 On DeleteOnDelete 策略实现了 StatefulSet 的遗留版本(kuberentes 1.6及以前的版本)的行为。如果 StatefulSet 的 .spec.updateStrategy.type 字段被设置为 OnDelete,当您修改 .spec.template 的内容时,StatefulSet Controller 将不会自动更新其 Pod。您必须手工删除 Pod,此时 StatefulSet Controller 在重新创建 Pod 时,使用修改过的 .spec.template 的内容创建新 Pod。 Rolling Updates.spec.updateStrategy...
04-6.Ingress
Helm安装前置条件 kubernets集群 安装配置helm 1curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash 使用
04-7.job
简介作用Kubernetes jobs主要是针对短时和批量的工作负载。它是为了结束而运行的,而不是像deployment、replicasets、replication controllers和DaemonSets等其他对象那样持续运行。 场景1.批处理任务: 比如说你想每天运行一次批处理任务,或者在指定日程中运行。它可能是像从存储库或数据库中读取文件那样,将它们分配给一个服务来处理文件。 2.运维/ad-hoc任务: 比如你想要运行一个脚本/代码,该脚本/代码会运行一个数据库清理活动,甚至备份一个Kubernetes集群。 原理当Job创建的pod执行成功结束时,Job将记录成功结束的pod数量。当成功结束的pod达到指定的数量时,Job将完成执行 示例基本示例 .spec.completions:完成该Job需要执行成功的Pod数 .spec.parallelism:能够同时运行的Pod数 .spec.backoffLimit:允许执行失败的Pod数,默认值是6,0表示不允许Pod执行失败。如果Pod是restartPolicy为Nerver,则...














