当前位置:   article > 正文

kubernetes(K8S)集群架构详解_kuberbetes架构图

kuberbetes架构图

K8S架构图

这张是缩略图,本人原创图要边听歌边看:

K8S集群架构图https://www.processon.com/view/61aeba7be0b34d02d8b908b1?fromnew=1#pc

K8S介绍

kubernetes简称k8s,是谷歌开源的容器集群管理系统,用于自动部署、扩展和管理容器化(containerized)应用程序。

K8S提供哪些功能

  1. 服务发现与调度
  2. 负载均衡
  3. 服务自愈
  4. 服务弹性扩容

K8S特点

  • 可移植: 支持公有云,私有云,混合云
  • 可扩展: 模块化, 插件化, 可挂载, 可组合
  • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

K8S几个重要概念

Namespaces:命名空间,Kubernetes使用Namespaces隔离多个虚拟环境,比如:生产环境、预发环境、开发环境,又或者项目一、项目二、项目三,根据使用方式来自定义不同的环境来做资源 隔离。

如何创建一个Namespaces呢?

第一种,使用命令创建:

  1. kubectl create namespace new-ns
  2. #或者使用简写:
  3. kubectl create ns new-ns

第二种,通过文件方式创建

vim my-ns.yaml

输入以下

  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. name: new-ns

运行命令

kubectl create -f ./my-ns.yaml

如何删除已经存在的Namespaces呢? 

  1. kubectl delete namespaces new-ns
  2. #或者使用简写:
  3. kubectl delete ns new-ns

Pod:是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod上可以跑一个或多个服务。

Deployment:控制器,为Replica Set(升级版的 Replication Controller)提供声明式更新。简单来说就是用它来控制Pod的创建、更新、删除。

编排文档参考:

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: nginx
  5. namespace: new-ns
  6. spec:
  7. serviceName: "nginx-service"
  8. replicas: 2
  9. selector:
  10. matchLabels:
  11. app: nginx
  12. template:
  13. metadata:
  14. labels:
  15. app: nginx
  16. spec:
  17. containers:
  18. - name: nginx
  19. image: k8s.gcr.io/nginx:v1
  20. ports:
  21. - containerPort: 80

StatefulSet:也是控制器或有状态服务,不仅能管理Pod对象,还能确保这些Pod的顺序性和一致性。

编排文档参考:

  1. apiVersion: apps/v1
  2. kind: StatefulSet
  3. metadata:
  4. name: nginx
  5. namespace: new-ns
  6. spec:
  7. serviceName: "nginx-service"
  8. replicas: 2
  9. selector:
  10. matchLabels:
  11. app: nginx
  12. template:
  13. metadata:
  14. labels:
  15. app: nginx
  16. spec:
  17. containers:
  18. - name: nginx
  19. image: k8s.gcr.io/nginx:v1
  20. ports:
  21. - containerPort: 80

Service:提供负载均衡的能力,有四种类型:ClusterIp,NodePort,LoadBalancer,ExternalName。

编排文档参考:

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. name: nginx-svc
  5. namespace: new-ns
  6. labels:
  7. app: nginx-svc
  8. spec:
  9. ports:
  10. - port: 80
  11. name: server
  12. targetPort: 80
  13. type: ClusterIP
  14. clusterIP: None
  15. selector:
  16. app: nginx

Ingress:相当于一个7层的负载均衡器,是k8s对反向代理的一个抽象。工作原理类似Nginx的反向代理。

编排文档参考:

  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4. name: nginx-ing
  5. namespace: new-ns
  6. spec:
  7. rules:
  8. - host: xxx.xxx.com
  9. http:
  10. paths:
  11. - path: /
  12. backend:
  13. serviceName: nginx-svc
  14. servicePort: server

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号