当前位置: 首页 > 软件库 > 云计算 > 云原生 >

k8s-deployment-strategies

Kubernetes deployment strategies explained
授权协议 Readme
开发语言 Google Go
所属分类 云计算、 云原生
软件类型 开源软件
地区 不详
投 递 者 濮阳茂材
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Kubernetes deployment strategies

In Kubernetes there is few different way to release an application, you haveto carefully choose the right strategy to make your infrastructure resilient.

  • recreate: terminate the old version and release the new one
  • ramped: release a new version on a rolling update fashion, oneafter the other
  • blue/green: release a new version alongside the old versionthen switch traffic
  • canary: release a new version to a subset of users, then proceedto a full rollout
  • a/b testing: release a new version to a subset of users in aprecise way (HTTP headers, cookie, weight, etc.). This doesn’t come out of thebox with Kubernetes, it imply extra work to setup a smarterloadbalancing system (Istio, Linkerd, Traeffik, custom nginx/haproxy, etc).
  • shadow: release a new version alongside the old version. Incomingtraffic is mirrored to the new version and doesn't impact theresponse.

Before experimenting, checkout the following resources:

Getting started

These examples were created and tested on Minikuberunning with Kubernetes v1.10.0.

$ minikube start --kubernetes-version v1.10.0 --memory 8192 --cpus 2

Visualizing using Prometheus and Grafana

The following steps describe how to setup Prometheus and Grafana to visualizethe progress and performance of a deployment.

Install Helm

To install Helm, follow the instructions provided on theirwebsite.

$ helm init

Install Prometheus

$ helm install \
    --namespace=monitoring \
    --name=prometheus \
    --version=7.0.0 \
    stable/prometheus

Install Grafana

$ helm install \
    --namespace=monitoring \
    --name=grafana \
    --version=1.12.0 \
    --set=adminUser=admin \
    --set=adminPassword=admin \
    --set=service.type=NodePort \
    stable/grafana

Setup Grafana

Now that Prometheus and Grafana are up and running, you can access Grafana:

$ minikube service grafana

To login, username: admin, password: admin.

Then you need to connect Grafana to Prometheus, to do so, add a DataSource:

Name: prometheus
Type: Prometheus
Url: http://prometheus-server
Access: Server

Create a dashboard with a Graph. Use the following query:

sum(rate(http_requests_total{app="my-app"}[5m])) by (version)

To have a better overview of the version, add {{version}} in the legend field.

Example graph

Recreate:

Ramped:

Blue/Green:

Canary:

A/B testing:

Shadow:

  • 你能讲清楚污点和容忍度吗? 当Kubernetes集群中的节点出现故障或需要维护时,管理员可能需要将工作负载从一个节点移到另一个节点。但是,将工作负载迁移到另一个节点可能会导致节点过载或资源不足,从而影响其他工作负载的性能。因此,Kubernetes提供了污点和容忍度的概念,用于控制工作负载可以在哪些节点上运行。 污点(Taint)是指在节点上设置一个标记,表示该节点“有问题”,即不适合运行某些工

  • k8s解决pod调度不均衡的问题 2020-07-31阅读 1.8K评论 1 问题及原因 k8s是通过sceduler来调度pod的,在调度过程中,由于一些原因,会出现调度不均衡的问题,例如: 节点故障新节点被加到集群中节点资源利用不足 这些都会导致pod在调度过程中分配不均,例如会造成节点负载过高,引发pod触发OOM等操作造成服务不可用 其中,节点资源利用不足时是最容易出现问题的,例如,设置的

  • Deployment 简述 Deployment 为 Pod 和 ReplicaSet 提供了一个声明式定义 (declarative) 方法,用来替代以前的 ReplicationController 更方便的管理应用。 作为最常用的 Kubernetes 对象,Deployment 经常会用来创建 ReplicaSet 和 Pod,我们往往不会直接在集群中使用 ReplicaSet 部署一个新

  • --- apiVersion: apps/v1 kind: Deployment metadata: name: ops-nginx-api # Deployment 对象的名称,与应用名称保持一致 namespace: default #命名空间 labels: appName: ops-nginx-api # 应用名称 spec: selector:

 相关资料
  • 简述 Deployment 为 Pod 和 ReplicaSet 提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController 来方便的管理应用。典型的应用场景包括: 定义Deployment来创建Pod和ReplicaSet 滚动升级和回滚应用 扩容和缩容 暂停和继续Deployment 比如一个简单的nginx应用可以定义为 apiVersion

  • deployment 是一个使用 BASH 编写的一个软件发布程序,实现自动备份,增量发布,失败回撤,在线备份等等功能。

  • Deployment的使用 前面的课程中我们学习了Replication Controller和Replica Set两种资源对象,RC和RS的功能基本上是差不多的,唯一的区别就是RS支持集合的selector。我们也学习到了用RC/RS来控制Pod副本的数量,也实现了滚动升级Pod的功能。现在看上去似乎一切都比较完美的运行着,但是我们上节课最后也提到了现在我们推荐使用Deployment这种控制

  • 通过使用Spring Boot应用程序,我们可以创建一个war文件以部署到Web服务器中。 在本章中,您将学习如何创建WAR文件并在Tomcat Web服务器中部署Spring Boot应用程序。 Spring Boot Servlet初始化程序 传统的部署方式是使Spring Boot Application @SpringBootApplication类扩展SpringBootServletI

  • This section covers running your application in production on a web server such as Apache or lighttpd. CGI Creating a .cgi file Server Setup mod_wsgi (Apache) Installing mod_wsgi Creating a .wsgi file

  • Depends on the Ingress Controller’s monitoring scope(cluster wide, single namespace base on ingress class), there are 3 types deployment architectures, BIG-IP used as external ingress controler for Ng