乐趣区

关于kubernetes:自动化集成Kubernetes容器引擎详解


同系列举荐

  • 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 images
REPOSITORY                           TAG                                                  
docker/desktop-kubernetes            kubernetes-v1.21.5-cni-v0.8.5-critools-v1.17.0-debian
k8s.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 version
Client Version GitVersion:v1.21.5
Server Version GitVersion:v1.21.5

# 查看集群:kubectl cluster-info
Kubernetes control plane is running at local-host:6443

# 查看节点:kubectl get nodes
NAME             STATUS   ROLES                  AGE   VERSION
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 类型,并没有设置具体端口,管制立体会在默认范畴内调配一个端口号;

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: cloud-app-deployment
  labels:
    app: cloud-app
spec:
  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: v1
kind: Service
metadata:
  name: cloud-app-service
  labels:
    app: cloud-app
spec:
  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-service
Name:                     cloud-app-service
NodePort:                 <unset>  30930/TCP
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、创立命名空间

kubectl create namespace cm-dev

查看命名空间

2、查看 Pod

3、查看 Deployment

4、查看 Service

五、源代码地址

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

退出移动版