Skip to content

Commit

Permalink
update k8s content
Browse files Browse the repository at this point in the history
  • Loading branch information
wzhai-hub committed Mar 15, 2024
1 parent 47f4f3f commit a0f548e
Show file tree
Hide file tree
Showing 13 changed files with 138 additions and 76 deletions.
9 changes: 8 additions & 1 deletion config/_default/menus.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ main:
url: '#language'
weight: 40
- name: System Design
url: '#projects'
url: '#systemDesign'
weight: 50
- name: Protocol
url: '#Protocol'
Expand Down Expand Up @@ -100,13 +100,20 @@ main:
# weight: 30
# parent: Language

- name: System Design
PageRef: System Design/_index.md
url: '#systemDesign'
# weight: 20
# parent: System Design

# Protocol
- name: Protocol
PageRef: Protocol/_index.md
url: '#Protocol'
# weight: 10
# parent: Language


# Link to a PDF of your resume/CV from the menu.
# To enable, copy your resume/CV to `static/uploads/resume.pdf` and uncomment the lines below.
# - name: CV
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
# Documentation: https://hugoblox.com/docs/managing-content/

title: "Service Mesh Istio概述及流量管理分析总结"
title: "Service Mesh Istio Traffic Management"
subtitle: ""
summary: "Service Mesh Istio概述及流量管理分析总结"
authors: []
Expand Down Expand Up @@ -30,7 +30,11 @@ projects: []
---
Service Mesh Istio概述及流量管理分析总结

<!-- https://www.bilibili.com/video/BV1aP41147DV/?spm_id_from=333.999.0.0&vd_source=d74f70dd1a3f3abb97c3a0481b65032c -->
- Istio
- 流量管理
- 安全
- 可观测性
- 扩展性

<iframe src="https://player.bilibili.com/player.html?bvid=BV1aP41147DV" width="100%" height="500" frameborder="0" allowfullscreen="true"></iframe>

Expand All @@ -46,4 +50,3 @@ Istio的流量控制流程是这样的:由Pilot维护管理策略,并通过
为了实现网格间的流量定向,Istio需要知道系统中的endpoint的位置,以及它们属于哪些服务。通过使用服务注册,Envoy可以把流量导向相应的服务。大部分基于微服务的应用中,每个服务的工作负载都有多个实例处理流量,Envoy可以根据配置的负载均衡策略将流量分发到这些实例上。

总的来说,Istio的流量控制功能强大且灵活,可以根据业务需求进行精细化的流量管理和调度。通过Envoy代理和Pilot组件的协同工作,Istio能够在服务网格中实现高效的流量控制和转发。

13 changes: 5 additions & 8 deletions content/Cloud Native/Istio/canary-deploy/index.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
# Documentation: https://hugoblox.com/docs/managing-content/

title: "service mesh Istio金丝雀发布"
title: "Istio Canary Deployments in kubernetes"
subtitle: ""
summary: "service mesh Istio金丝雀发布"
summary: "Istio 金丝雀部署"
authors: []
tags:
- Istio
categories: []
date: 2024-03-08T11:27:22+08:00
lastmod: 2024-03-08T11:27:22+08:00
lastmod: 2024-03-15T11:27:22+08:00
featured: false
draft: false

Expand All @@ -29,10 +29,6 @@ image:
projects: []
---

<iframe src="https://player.bilibili.com/player.html?bvid=BV1kN411z74k" width="100%" height="500" frameborder="0" allowfullscreen="true"></iframe>

<!-- https://www.bilibili.com/video/BV1kN411z74k/?spm_id_from=333.999.0.0&vd_source=d74f70dd1a3f3abb97c3a0481b65032c -->

金丝雀发布(Canary Release)也被称为灰度发布,是一种在软件部署中使用的策略,旨在降低在生产环境中引入新版本软件的风险。它通过在将更改推广到整个基础架构并使其可供所有人使用之前,先缓慢地将更改推广到一小部分用户,从而实现平滑的过渡。

这种发布方式得名于矿工使用金丝雀来探测矿井中是否有有毒气体的历史实践。如果金丝雀能够存活下来,矿工就知道矿井是安全的,可以安全下井采矿。类似地,在金丝雀发布中,新版本首先被部署到一小部分用户或服务器,作为“金丝雀”来测试新版本的性能和表现。
Expand All @@ -42,4 +38,5 @@ projects: []
金丝雀发布通常涉及对流量的精细控制,以及对日志和服务器监控的深入分析,以了解新版本的实时表现和用户反馈。这种发布方式在Kubernetes等容器中尤为常见,可以通过暂停滚动更新来实现灰度发布。

金丝雀发布是一种有效的风险管理策略,可以帮助团队更安全、更可靠地部署新版本软件。
<!-- 视频 -->
#### 下面我来详细讲解Canary Deployments
<iframe src="https://player.bilibili.com/player.html?bvid=BV1kN411z74k" width="100%" height="500" frameborder="0" allowfullscreen="true"></iframe>
22 changes: 9 additions & 13 deletions content/Cloud Native/kubernetes/HELM/index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
# Documentation: https://hugoblox.com/docs/managing-content/

title: "K8s应用程序部署的打包工具Helm 概述介绍"
title: "K8S package tool HELM introduce"
subtitle: ""
summary: "理解kubernetes 应用部署管理软件Helm功能"
authors: []
Expand Down Expand Up @@ -31,20 +31,16 @@ projects: []
---

## K8s应用程序部署的打包工具Helm 概述介绍
- Helm file format: YAML/GO 模板函数
- Helm是Kubernetes生态系统中的一个重要工具,主要用于管理Kubernetes应用资源。它类似于Ubuntu的apt、CentOS的yum或Python的pip,专门用于对Kubernetes应用进行统一打包、分发、安装、升级以及回退等操作。

<iframe src="https://player.bilibili.com/player.html?bvid=BV1tm4y177MC" width="100%" height="500" frameborder="0" allowfullscreen="true"></iframe>

<!-- https://www.bilibili.com/video/BV1tm4y177MC/?spm_id_from=333.999.0.0&vd_source=d74f70dd1a3f3abb97c3a0481b65032c -->


Helm是Kubernetes生态系统中的一个重要工具,主要用于管理Kubernetes应用资源。它类似于Ubuntu的apt、CentOS的yum或Python的pip,专门用于对Kubernetes应用进行统一打包、分发、安装、升级以及回退等操作。
- Helm包括三个基本概念:Chart、Repository和Release。
- Chart:Helm的应用包,它包括了应用的所有Kubernetes manifest模版,类似于YUM RPM或Apt dpkg文件。Chart封装了Kubernetes原生应用程序的一系列yaml文件,可以在部署应用时自定义应用程序的一些元数据,以便于应用程序的分发。
- Repository:Helm包的存储仓库,类似于软件包的仓库或存储中心,用于存储和检索Helm Chart。
- Release:Chart的部署实例,每个Chart可以部署一个或多个release。

Helm包括三个基本概念:Chart、Repository和Release
Helm是Kubernetes应用中不可或缺的一部分,它大大简化了Kubernetes应用的管理和部署过程,提高了应用的稳定性和可靠性

* Chart:Helm的应用包,它包括了应用的所有Kubernetes manifest模版,类似于YUM RPM或Apt dpkg文件。Chart封装了Kubernetes原生应用程序的一系列yaml文件,可以在部署应用时自定义应用程序的一些元数据,以便于应用程序的分发。
* Repository:Helm包的存储仓库,类似于软件包的仓库或存储中心,用于存储和检索Helm Chart。
* Release:Chart的部署实例,每个Chart可以部署一个或多个release。

Helm是Kubernetes应用中不可或缺的一部分,它大大简化了Kubernetes应用的管理和部署过程,提高了应用的稳定性和可靠性。
<iframe src="https://player.bilibili.com/player.html?bvid=BV1tm4y177MC" width="100%" height="500" frameborder="0" allowfullscreen="true"></iframe>

<!-- 视频 -->
10 changes: 6 additions & 4 deletions content/Cloud Native/kubernetes/K8S-auto-scala/index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
# Documentation: https://hugoblox.com/docs/managing-content/

title: "几分钟彻底理解K8S自动扩缩容"
title: "Master K8S auto scaling"
subtitle: ""
summary: "几分钟彻底理解K8S自动扩缩容"
authors: []
Expand Down Expand Up @@ -30,9 +30,12 @@ image:
projects: []
---

<!-- https://www.bilibili.com/video/BV1hF411y7uP/?spm_id_from=333.999.0.0&vd_source=d74f70dd1a3f3abb97c3a0481b65032c -->
<iframe src="https://player.bilibili.com/player.html?bvid=BV1hF411y7uP" width="100%" height="500" frameborder="0" allowfullscreen="true"></iframe>
- K8S自动扩缩容
- 水平扩缩容,垂直扩缩容
- HPA
- metrics

<iframe src="https://player.bilibili.com/player.html?bvid=BV1hF411y7uP" width="100%" height="500" frameborder="0" allowfullscreen="true"></iframe>

Kubernetes(K8s)的自动扩缩容功能是通过Horizontal Pod Autoscaling(HPA)实现的。HPA是K8s的一种资源类型,它可以根据集群中Pod的实时负载情况,自动调整Pod的副本数量,以实现资源的弹性伸缩。

Expand All @@ -44,4 +47,3 @@ Kubernetes(K8s)的自动扩缩容功能是通过Horizontal Pod Autoscaling

总的来说,K8s的自动扩缩容功能通过HPA实现了对Pod资源的弹性管理,有效提高了集群的资源利用率和应用的稳定性。

<!-- 视频讲解 -->
79 changes: 36 additions & 43 deletions content/Cloud Native/kubernetes/K8S-overview/index.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
# Documentation: https://hugoblox.com/docs/managing-content/

title: "10 minutes understand kubernetes Overview"
title: "kubernetes overview in 10 minutes"
subtitle: ""
summary: "10分钟彻底理解kubernetes(K8S)分布式云原生系统"

authors: []
authors: [Tony zhai]
# tags: []
tags:
- kubernetes
Expand All @@ -30,45 +30,38 @@ image:
# Otherwise, set `projects = []`.
projects: []
---
<!-- https://www.bilibili.com/video/BV1cF411X7nV/?spm_id_from=333.999.0.0 -->

## 10分钟彻底理解kubernetes(K8S)分布式云原生系统

### 欢迎大家观看我的视频讲解《10分钟彻底理解kubernetes(K8S)分布式云原生系统》
<iframe src="https://player.bilibili.com/player.html?bvid=BV1cF411X7nV" width="100%" height="500" frameborder="0" allowfullscreen="true"></iframe>



## K8S的出现
Kubernetes,也称为K8s,是一款开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。以下是Kubernetes的一些主要特性:

传统的服务部署方式逐渐发展到现代的容器编排系统。以下是K8S演进过程的主要阶段:

1. **传统的服务部署**
- 在早期,应用程序通常直接部署在物理机上。这种方式导致资源分配不均、维护困难,以及扩展性差等问题。

2. **虚拟机部署**
- 为了解决物理机上的资源分配问题,虚拟化技术被引入。虚拟机(VM)允许在一台物理机上运行多个独立的操作系统实例,从而提高了资源的利用率和灵活性。如KVM。
- 然而,虚拟机仍然面临一些问题,如启动时间长、资源消耗大等。

3. **容器部署**
- 随着Docker等容器技术的兴起,应用程序及其依赖被打包成轻量级的容器镜像,可以快速部署和迁移。
- 容器提供了更好的资源隔离和更小的资源消耗,使得应用程序的部署和管理变得更加高效。
- Docker等容器技术使得开发者能够轻松地将应用程序及其环境打包为一个可移植的单元,从而简化了部署过程。

4. **K8S的出现**
- 尽管容器技术解决了许多部署问题,但随着容器数量的增加,管理和编排这些容器变得越来越复杂。
- Kubernetes(K8S)应运而生,它是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。
- K8S提供了丰富的功能,如自我修复、弹性伸缩、服务发现和负载均衡等,使得容器化应用程序的部署和管理变得更加简单和高效。

## K8S 有哪些特性

1. **弹性伸缩**:Kubernetes支持水平和垂直的自动扩展,根据应用程序的负载情况进行弹性调整,确保资源利用效率和应用程序的高可用性。水平扩展功能允许通过简单命令或UI手动扩展,同时也支持基于CPU等资源负载率的自动水平扩展机制。
2. **服务发现与负载均衡**:Kubernetes提供了内建的DNS服务来实现服务发现,并通过负载均衡机制将流量分配到相应的后端服务上。这主要通过KubeDNS(或CoreDNS)组件实现,为每个Service配置DNS名称,允许集群内的客户端直接使用此名称发出访问请求,而Service则通过iptables或ipvs进行负载均衡。
3. **自我修复**:Kubernetes具备自我修复能力,当容器或节点出现故障时,会自动重新启动容器或替换故障节点,确保应用程序持续可用。这种自愈机制还包括容器故障后自动重启、节点故障后重新调度容器,以及其他可用节点、健康状态检査失败后关闭容器并重新创建等功能。
4. **自动发布和回滚**:Kubernetes支持“灰度”更新应用程序或其配置信息,并会监控更新过程中应用程序的健康状态。如果在更新过程中出现故障,它会立即自动执行回滚操作。
5. **安全性**:Kubernetes提供了多种安全机制,如访问控制、身份验证、密钥管理等,保护容器和集群的安全。

此外,Kubernetes集群中的节点(Node)是工作负载节点,每个Node会被Master分配一些工作负载,当某一个Node宕机时,其上的工作负载会被Master自动转移到其他节点上。关键进程如kubelet负责Pod对应的容器的创建、启动、停止等任务,并与Master节点密切协作,实现集群管理的基本功能;而kube-proxy则是实现Kubernetes Service的通信与负载均衡机制的重要组件。


1. 传统裸机部署方式->虚拟机部署->容器化->容器编排[kubernetes]
2. K8S组件
- masternode: kube-apiserver,kube-controller-manager,etcd,kube-schedular
- worknode: kubelet,kube-proxy
3. K8S 概念有哪些呢?
- pod:
- ReplicaSet
- Deployments
- StatefulSet
- DaemonSet
- Job
- CronJob
- volume:
- EmptyDir
- HostPath
- PersistentVolumeClaim(PVC)
- PersistentVolume(PV)
- ConfigMap
- Secret
- NFS(Network File System)
- Glusterfs
- PersistentVolume(PV)
- svc:
- Four types of services
- Cluster IP
- NodePort
- Load Balancer
- ExternalName
- Headless Services
- K8S service Discovery,通过KubeDNS(或CoreDNS)组件实现.


## 可以观看我的视频讲解《10分钟彻底理解kubernetes(K8S)分布式云原生系统》
<iframe src="https://player.bilibili.com/player.html?bvid=BV1cF411X7nV" width="100%" height="500" frameborder="0" allowfullscreen="true"></iframe>
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
# Documentation: https://hugoblox.com/docs/managing-content/

title: "三种方法访问minikube集群"
title: "Three ways request to servive"
subtitle: ""
summary: "三种方法访问minikube集群"

Expand Down Expand Up @@ -31,7 +31,11 @@ image:
projects: []
---

### 欢迎大家观看我的视频讲解《三种方法访问minikube集群,Port-forward,Tunnel,Ingress》
## 欢迎大家观看我的视频讲解《三种方法访问minikube集群,Port-forward,Tunnel,Ingress》
- Three ways forwards to servive
- Port-forward
- Tunnel
- Ingress

<iframe src="https://player.bilibili.com/player.html?bvid=BV1Bh4y1j7Gu" width="100%" height="500" frameborder="0" allowfullscreen="true"></iframe>

<!-- https://www.bilibili.com/video/BV1Bh4y1j7Gu/?spm_id_from=333.999.0.0&vd_source=d74f70dd1a3f3abb97c3a0481b65032c -->
16 changes: 16 additions & 0 deletions content/System Design/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
title: System Design
cms_exclude: true

# View.
# 1 = List
# 2 = Compact
# 3 = Card
# 4 = Citation
view: 3

# Optional header image (relative to `static/media/` folder).
banner:
caption: ''
image: ''
---
Binary file added content/System Design/system-design/featured.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
44 changes: 44 additions & 0 deletions content/System Design/system-design/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
# Documentation: https://hugoblox.com/docs/managing-content/

title: "System Desigin Overview"
subtitle: ""
summary: "系统设计演进方案"
authors: []
tags:
- system desigin
categories: []
date: 2024-03-08T11:27:22+08:00
lastmod: 2024-03-08T11:27:22+08:00
featured: false
draft: false

# Featured image
# To use, add an image named `featured.jpg/png` to your page's folder.
# Focal points: Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight.
image:
caption: ""
focal_point: ""
preview_only: false

# Projects (optional).
# Associate this post with one or more of your projects.
# Simply enter your project's folder or file name without extension.
# E.g. `projects = ["internal-project"]` references `content/project/deep-learning/index.md`.
# Otherwise, set `projects = []`.
projects: []
---

## System Desigin
- 系统设计
- DNS server
- 传输协议:TCP UDP FTP SMTP DNS SSH SNMP RTP LDAP diameter http HTTP2 GRPC
- 关系型数据库:Postgres Mysql orcal
- 非关系型数据库:cassandra Hbase Amazon Dynamodb
- 缓存:redis
- 消息队列
- 扩展性:水平扩展,自动扩缩容
- 服务发现

## 系统设计演进方案
<iframe src="https://player.bilibili.com/player.html?bvid=BV1vm4y1P7Xu" width="100%" height="500" frameborder="0" allowfullscreen="true"></iframe>
2 changes: 1 addition & 1 deletion content/authors/admin/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,5 +121,5 @@ highlight_name: true
---

<!-- Chien Shiung Wu is a professor of artificial intelligence at the Stanford AI Lab. Her research interests include distributed robotics, mobile computing and programmable matter. She leads the Robotic Neurobiology group, which develops self-reconfiguring robots, systems of self-organizing robots, and mobile sensor networks. -->
I have over a decade of development experience and possess a strong curiosity and enthusiasm for acquiring new knowledge. I am dedicated to continuous learning.
Tony zhai have over a decade of development experience and possess a strong curiosity and enthusiasm for acquiring new knowledge. I am dedicated to continuous learning.
{style="text-align: justify;"}
Binary file removed content/authors/admin/xx.jpg
Binary file not shown.

0 comments on commit a0f548e

Please sign in to comment.