同系列举荐:
- Jenkins管理工具详解
- Pipeline流水语法详解
- Docker容器入门简介
- Pipeline整合Docker容器
- 微服务组件二次浅封装
前言:该系列文章,围绕继续集成: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连贯的问题,耗时较长,上面是脚本拉取的镜像:
docker imagesREPOSITORY TAG docker/desktop-kubernetes kubernetes-v1.21.5-cni-v0.8.5-critools-v1.17.0-debiank8s.gcr.io/kube-apiserver v1.21.5 k8s.gcr.io/kube-proxy v1.21.5 k8s.gcr.io/kube-controller-manager v1.21.5 k8s.gcr.io/kube-scheduler v1.21.5 docker/desktop-vpnkit-controller v2.0 docker/desktop-storage-provisioner v2.0 k8s.gcr.io/pause 3.4.1 k8s.gcr.io/coredns/coredns v1.8.0 k8s.gcr.io/etcd 3.4.13-0
上述镜像下载实现后,通过docker桌面软件启动k8s即可,这里启动工夫绝对偏长,启动胜利之后界面左下角K8S显示绿色状态:
2、环境查看
# 查看版本:kubectl versionClient Version GitVersion:v1.21.5Server Version GitVersion:v1.21.5# 查看集群:kubectl cluster-infoKubernetes control plane is running at local-host:6443# 查看节点:kubectl get nodesNAME STATUS ROLES AGE VERSIONdocker-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
类型,并没有设置具体端口,管制立体会在默认范畴内调配一个端口号;
---apiVersion: apps/v1kind: Deploymentmetadata: name: cloud-app-deployment labels: app: cloud-appspec: selector: matchLabels: app: cloud-app template: metadata: labels: app: cloud-app spec: containers: - name: cloud-app image: Cloud_Url/cicada-image/cloud-app imagePullPolicy: Never ports: - containerPort: 8079---apiVersion: v1kind: Servicemetadata: name: cloud-app-service labels: app: cloud-appspec: type: NodePort ports: - port: 8080 targetPort: 8079 selector: app: cloud-app
3、资源管理
创立资源
kubectl create -f pod.yaml
查看资源
# 1、查看Pod信息kubectl get pods -o wide# 2、查看Service信息kubectl get svc -o wide# 3、查看Node信息kubectl get nodes -o wide
也能够在K8S的Web管制台上,查看资源的可视化界面,上面截图几个脚本中明确申明的资源信息:
删除资源
# 1、通过文件删除kubectl delete -f pod.yaml# 2、通过具体资源名删除kubectl delete pod cloud-app
4、拜访资源
# 查看服务的详细描述kubectl describe svc cloud-app-serviceName: cloud-app-serviceNodePort: <unset> 30930/TCPEndpoints: Pod_IP:Pod_端口
这里NodePort
端口默认调配30930
,当内部拜访流量达到Service时,会路由到指定Endpoints
(端点),通过下面的资源查看可知,这里Endpoints即Pod的IP与端口;
通过:本机IP:调配端口/API
形式,即localhost:30930/client
拜访到docker容器中利用,也能够在Web界面的Pod模块查看具体的日志输入:
四、控制台组件
Dashboard是基于Web的Kubernetes用户界面,能够应用Dashboard将容器利用部署到Kubernetes集群中,也能够对容器利用排错,还能治理集群资源,查看日志等。
1、创立命名空间
kubectl create namespace cm-dev
查看命名空间
2、查看Pod
3、查看Deployment
4、查看Service
五、源代码地址
GitEE·地址https://gitee.com/cicadasmile/butte-auto-parentWiki·地址https://gitee.com/cicadasmile/butte-java-note