经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
自动化集成:Kubernetes容器引擎详解
来源:cnblogs  作者:知了一笑  时间:2022/1/17 10:58:46  对本文有异议

前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译、打包、镜像构建、部署等操作;本篇文章主要描述Kubernetes引擎用法

一、基础简介

Kubernetes简称K8S,是一个开源的分布式的容器编排引擎,用来对容器化应用进行自动化部署和管理。

Control-Plane-Components:控制平面组件,对集群做出全局决策,例如:调度、检测和事件响应,可以在集群中的任何节点上运行;

  • api:作为K8S控制面的组件,开放K8S的API,相当于控制面的前端;
  • etcd:兼具一致性和高可用性的键值数据库,作为保存K8S数据的后台库;
  • scheduler:监听新建未指定运行节点的Pods,并为Pod选择运行节点;
  • controllermanager:运行控制器进程,逻辑上是一个单独的进程;

Node:节点组件:每个节点上运行,维护运行的Pod并提供Kubernetes运行环境;

  • kubelet:在每个节点上运行的代理,保证容器都运行在Pod中;
  • kube-proxy:每个节点上运行的网络代理, 维护节点上的网络规则;

Container-Runtime:容器运行时,负责运行容器的软件,支持Docker、containerd、CRI-O等多个容器运行环境,以及任何实现Kubernetes-CRI容器运行环境接口。

二、环境配置

1、服务搭建

使用Git拉取k8s-docker-desktop-for-mac仓库,执行load_images.sh脚本,会拉取本地docker对应的k8s版本,注意这里要等到脚本流程执行完毕,可能因为Git连接的问题,耗时较长,下面是脚本拉取的镜像:

  1. docker images
  2. REPOSITORY TAG
  3. docker/desktop-kubernetes kubernetes-v1.21.5-cni-v0.8.5-critools-v1.17.0-debian
  4. k8s.gcr.io/kube-apiserver v1.21.5
  5. k8s.gcr.io/kube-proxy v1.21.5
  6. k8s.gcr.io/kube-controller-manager v1.21.5
  7. k8s.gcr.io/kube-scheduler v1.21.5
  8. docker/desktop-vpnkit-controller v2.0
  9. docker/desktop-storage-provisioner v2.0
  10. k8s.gcr.io/pause 3.4.1
  11. k8s.gcr.io/coredns/coredns v1.8.0
  12. k8s.gcr.io/etcd 3.4.13-0

上述镜像下载完成后,通过docker桌面软件启动k8s即可,这里启动时间相对偏长,启动成功之后界面左下角K8S显示绿色状态:

2、环境查看

  1. # 查看版本:kubectl version
  2. Client Version GitVersion:v1.21.5
  3. Server Version GitVersion:v1.21.5
  4. # 查看集群:kubectl cluster-info
  5. Kubernetes control plane is running at local-host:6443
  6. # 查看节点:kubectl get nodes
  7. NAME STATUS ROLES AGE VERSION
  8. docker-desktop Ready control-plane,master 23h v1.21.5

三、部署Docker镜像

1、核心组件

在执行Docker镜像部署之前,首先要理解该流程中几个核心的概念:

  • Pod:是可以在Kubernetes中创建和管理的、最小的可部署的计算单元;就Docker概念的术语而言,Pod类似于共享命名空间和文件系统卷的一组Docker容器;
  • ReplicaSet:目的是维护一组在任何时候都处于运行状态的Pod副本的稳定集合;通常用来保证一定数量的、完全相同的Pod的可用性;
  • Deployment:为Pods和ReplicaSets提供声明式的更新能力,可以定义Deployment以创建新的ReplicaSet,或删除现有Deployment;
  • Service:抽象的方式将运行在一组Pods上的应用程序公开为网络服务,在K8S中逻辑上Pods集合与访问策略,这种模式被称为微服务;

2、脚本文件

这里将Deployment与Service放在一个.yaml文件中;镜像加载设置imagePullPolicy:Never即本地读取;其中服务发现采用的是NodePort类型,并没有设置具体端口,控制平面会在默认范围内分配一个端口号;

  1. ---
  2. apiVersion: apps/v1
  3. kind: Deployment
  4. metadata:
  5. name: cloud-app-deployment
  6. labels:
  7. app: cloud-app
  8. spec:
  9. selector:
  10. matchLabels:
  11. app: cloud-app
  12. template:
  13. metadata:
  14. labels:
  15. app: cloud-app
  16. spec:
  17. containers:
  18. - name: cloud-app
  19. image: Cloud_Url/cicada-image/cloud-app
  20. imagePullPolicy: Never
  21. ports:
  22. - containerPort: 8079
  23. ---
  24. apiVersion: v1
  25. kind: Service
  26. metadata:
  27. name: cloud-app-service
  28. labels:
  29. app: cloud-app
  30. spec:
  31. type: NodePort
  32. ports:
  33. - port: 8080
  34. targetPort: 8079
  35. selector:
  36. app: cloud-app

3、资源管理

创建资源

  1. kubectl create -f pod.yaml

查看资源

  1. # 1、查看Pod信息
  2. kubectl get pods -o wide
  3. # 2、查看Service信息
  4. kubectl get svc -o wide
  5. # 3、查看Node信息
  6. kubectl get nodes -o wide

也可以在K8S的Web控制台上,查看资源的可视化界面,下面截图几个脚本中明确声明的资源信息:

删除资源

  1. # 1、通过文件删除
  2. kubectl delete -f pod.yaml
  3. # 2、通过具体资源名删除
  4. kubectl delete pod cloud-app

4、访问资源

  1. # 查看服务的详细描述
  2. kubectl describe svc cloud-app-service
  3. Name: cloud-app-service
  4. NodePort: <unset> 30930/TCP
  5. Endpoints: Pod_IP:Pod_端口

这里NodePort端口默认分配30930,当外部访问流量到达Service时,会路由到指定Endpoints(端点),通过上面的资源查看可知,这里Endpoints即Pod的IP与端口;

通过:本机IP:分配端口/API方式,即localhost:30930/client访问到docker容器中应用,也可以在Web界面的Pod模块查看具体的日志输出:

四、控制台组件

Dashboard是基于Web的Kubernetes用户界面,可以使用Dashboard将容器应用部署到Kubernetes集群中,也可以对容器应用排错,还能管理集群资源,查看日志等。

1、创建命名空间

  1. kubectl create namespace cm-dev

查看命名空间

2、查看Pod

3、查看Deployment

4、查看Service


同系列推荐


五、源代码地址

  1. GitEE·地址
  2. https://gitee.com/cicadasmile/butte-auto-parent
  3. Wiki·地址
  4. https://gitee.com/cicadasmile/butte-java-note

原文链接:http://www.cnblogs.com/cicada-smile/p/15769595.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号