暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

区块链以及在 Docker 和 Kubernetes 上部署应用程序

原创 王语嫣 2022-10-21
728

介绍

正在转型的国家机构之一 Niti Ayog 发表了一篇关于印度区块链用例的文章。关于区块链的几个问题,为什么是区块链,以及我们如何通过应该所知的 docker 和 Kubernetes 部署我们的应用程序。

目标

我们将在本文中讨论区块链以及在 Docker Hub 和 Kubernetes 上部署应用程序。希望大家有兴趣详细了解一下。

什么是区块链?

区块链,这个词表明我们的每个数据都通过一种称为密码学或加密的技术存储在块中。它将我们的数字数据更改为并非所有人都能阅读的代码。数字数据以块的形式添加。当存储一个数据块并且没有剩余空间时,另一个块准备好存储数据。

为了阻止欺诈并保护我们的数据,我们需要区块链技术。

区块链在我们日常生活中的一些应用

1. 网络安全

区块链可以通过其分散的解决方案在安全系统中发挥至关重要的作用,这意味着不是一个人是领导者,而是许多权威。对于中心化系统,只有一个是头部领导者。

2. 医疗保健

患者保留病历很麻烦,但他们可以将病历上传到区块链并进行更新。查看病历对患者和医生都有好处。

3. 在土地登记处

我们已经看到很多土地和财产的欺诈案件,借助区块链技术,我们可以在一定程度上挽救它。

4.在金融安全方面

当我们必须在海外在线转账时,银行会使用一种加密货币(不受所谓政府控制的数字货币),称为涟漪。如果您参与任何慈善工作和在线捐赠,您一定还想知道您辛苦赚来的钱都去了哪里。在这种情况下,区块链技术可以提供洞察力,因为它提供了透明度。

现在我们的脑海中出现了一个问题,实际上加密货币是什么?

加密货币

加密货币是用于在线买卖商品或转账的数字货币,与政府无关。由于政府的作用,它也被称为去中心化货币。

比特币和以太坊是古老的加密货币,世界上出现了近千种加密货币。

什么是比特币

它是最古老的数字货币之一,无需任何政府或金融机构参与即可在全球范围内使用,并使用去中心化协议。换句话说,它是一种点对点的价值交换。

什么是以太坊

以太坊是市场上继比特币之后使用基于去中心化协议的以太数字货币的区块链技术。

 

区块链

现在问题来了,它是如何创建的?

加密货币是如何创建的?

那么加密货币是如何创建的呢?它是在区块链上运行的软件。它分散并分布在一家公司的各种服务器上,其中存在代码形式的数据。

大多数新的加密货币都是在交易被确认时发生的,这个过程被称为挖 矿。挖 矿的加密货币不一定只存在;他们可以使用其他技术。

Docker Desktop和区块链

为了让我们的应用程序或网站运行,我们曾经需要一个 LAMP,但如果流量更多,我们如何让我们的网站或应用程序运行?

Docker 提供了运行我们应用程序的源代码。

我们现在将使用 docker 应用程序来部署由 HTML、CSS 和 JavaScript 文件组成的应用程序。


如何在 Windows 上安装 Docker 桌面?

我们可以通过 Docker 访问网站 Docker Desktop for Windows 在window10 pro 上安装 Docker 应用程序 | Docker Desktop

码头工人

我们可以通过转到设置,选择应用程序和功能,然后通过右键单击 docker 应用程序来卸载 Windows。但是,仅当 windows 的先前版本不存在时,新版本才会存在。可以通过转到任务管理器并结束 docker 引擎的任务来删除 docker 引擎。通过转到程序文件并通过转到应用程序和功能删除文件夹可以轻松删除所有文件。

在终端类型 docker run -d -p 80:80 docker/getting-started。

它将下载较新的图像。

C:>docker run -d -p 80:80 docker/getting-started
Unable to find image 'docker/getting-started: latest' locally
latest: Pulling from docker/getting-started
97518928ae5f: Pull complete
a4e156412037: Pull complete
e0bae2ade5ec: Pull complete
3f3577460f48: Pull complete
e362c27513c3: Pull complete
a2402c2da473: Pull complete
eb65930377cd: Pull complete
69465e074227: Pull complete
Digest: sha256:86093b75a06bf74e3d2125edb77689c8eecf8ed0cb3946573a24a6f71e88cf80
Status: Downloaded newer image for docker/getting-started:latest
2dca1872873605d54ba811c57838c0dff183220c9a1acd5fc6bea114cea897e2


Kubernetes

 

区块链

 

打开窗口外壳后,键入 docker ps 和 docker version。

我们将创建一个名为 docker test 的文件夹,其中 dockerfile 将在其中,然后创建另一个名为 HTML 的文件夹,我们将在其中保存我们的 HTML 文件。

在 Windows echo 中创建 Docker 文件。> Dockerfile

并输入

>>>FROM httpd:2.4
COPY ./public-HTML/ /usr/local/apache2/htdocs/

在命令行上写

>>>docker build -t my-apache2.

在命令行中输入之后

>>>docker run -dit -p 8080:80 --name my-running app my-apache2

现在我们将打开我们的 Docker 桌面。

我们可以看到 my-running-app 正在运行。可以选择另一个名称。

我们可以看到我们的应用程序正在 localhost:8080 上运行。

区块链

docker hub之后,我们将详细进入Kubernetes。

什么是 Kubernetes?

Kubernetes 是世界上使用最广泛的开源容器引擎。它允许您安排和管理容器。它可以在桌面、本地或云中运行,因为它是开源的。它使您可以轻松地在这些不同的上下文中移动您的工作负载。

为什么选择 Kubernetes 上的区块链 (BoK)?

Azure、Evernote 和 Shopify 使用 Kubernetes。

Kubernetes 为区块链应用程序提供了简单的部署来运行简单的部署,并且服务是必要的。

它提供互操作性,在 Kubernetes 上运行的区块链应用程序可以在主机托管的不同架构样式上运行。IBM 和 AWS 是一些通过 Kubernetes 提供模板来创建区块链网络的例子。

Kubernetes 和 Docker 的区别

应用程序的部署发生在 pod、部署形式和服务中,而在 Docker hub 上仅以服务的形式发生。

设置和安装并不容易,而在 docker hub 上却很容易。

Azure 和 Shopify 是 Kubernetes 的一些示例,而 Google 和 Amazon 是 Docker hub 的一些示例。

Kubernetes 与 docker 一起工作,以实现容器化应用程序的平稳运行和更好的控制。

代码工作

我们将首先学习使用 Minikube 在 Windows 上启动和运行 Kubernetes 环境。然后,使用 Kubernetes 仪表板,启动一个示例 Kubernetes 应用程序并对其进行管理。

Kubectl 的重要性

Kubernetes集群通过 Kubectl 进行控制设置完成后,它是 Kubernetes 的基本组件之一,可以在任何操作工作站上运行。它管理节点。Kubernetes 对象,集群是使用 Kubectl 的命令来管理的。

安装 Kubectl

您可以从最新版本 v1.23.0 下载最新版本。

如果您安装了 curl,您可以转到命令行。

curl -LO https://dl.k8s.io/release/v1.23.0/bin/windows/amd64/kubectl.exe

kubectl 校验和文件

curl -LO " https://dl.k8s.io/v1.23.0/bin/windows/amd64/kubectl.exe.sha256 "

将 CertUtil 的输出与校验和文件进行比较

CertUtil -hashfile kubectl.exe SHA256
type kubectl.exe.sha256

检查版本

kubectl version --client

该教程可以在 Windows 上安装和设置 kubectl 中找到。Kubernetes。

Kubectl Configuration  
kubectl cluster-info


如果 kuberctl 配置不正确会抛出错误。

在继续之前,我们必须安装 minikube。

Minikube 的重要性

Minikube 使 Kubernetes 在本地运行。minikube 在您的计算机上创建一个单节点 Kubernetes 集群(包括操作系统 Microsoft Windows 和 macOS,因此您可以尝试 Kubernetes 或进行日常开发工作。

安装 Minikube

我们已经从网站 Release v1.2.0 · kubernetes/minikube (github.com) 安装了 Minikube。

区块链

 

我们将复制 C 盘上的 Kubectl 和 Minikube 以具有相同的路径。需要 Hyper-V。安装后,打开 Hyper-V 管理器并单击虚拟交换机管理器。

Kubernetes

 

让我们将新名称命名为 minikube。选择内部网络后,应用并点击 OK 按钮。

Kubernetes

 

之后,打开控制面板,点击网络和Internet,网络和共享中心,然后点击新建虚拟交换机和属性。然后转到选项卡共享并允许它通过选择并选择 minikube 并点击 OK 按钮进行连接。

最后,在命令行上,输入 minikube start

在输入之前,请确保 Docker Daemon 正在运行。否则会显示错误。

C:>minikube start

配置类型后

C:>kubectl get nodes
NAME       STATUS   ROLES                  AGE    VERSION 
minikube   Ready    control-plane,master   2m3s   v1.22.3 
NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE 
service/kubernetes   ClusterIP   10.96.0.1            443/TCP   4m43s
C:>kubectl get all

运行第一个应用程序 Hello World

C:>git clone https://github.com/skynet86/hello-world-k8s.git
C:>cd hello-world-k8s/
helloworld.yaml file contents 
apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: hello-world-deployment 
  labels: 
    app: hello-world 
spec: 
  selector: 
    matchLabels: 
      app: hello-world 
  replicas: 2

其中“name”参数表示创建了一个名为“hello-world-deployment”的部署。

replicas 列表示两个复制的 Pod。

“选择器”列指示 Deployment 如何确定它应该管理哪些 Pod。

apiVersion: v1 
kind: Service 
metadata: 
  name: hello-world 
spec: 
  selector: 
    app: hello-world 
  ports: 
    - protocol: TCP 
      port: 80 
      targetPort: 80 
      nodePort: 30081    
 type: NodePort 
kubectl create -f hello-world.yaml

它创建了“hello-world”服务。我们正在使用此服务在节点上公开我们的应用程序。“类型”字段指定服务类型。节点 30081 -> 服务 80 -> Pod/容器 80 是端口。您可以通过访问http://localhost:30081 从本地计算机访问应用程序。

您还可以创建我们创建的文件示例 happybirthday.yaml

apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: happybirthday 
spec: 
  selector: 
    matchLabels: 
      app: happybirthday 
    metadata: 
      labels: 
        app: happybirthday 
    spec: 
      containers: 
      - name: happybirthday 
        image: karthequian/happybirthday:latest 
        ports: 
        - containerPort: 80 
--- 
apiVersion: v1 
kind: Service 
metadata: 
  name: happybirthday 
spec: 
  selector: 
    app: happybirthday 
  ports: 
    - protocol: TCP 
      port: 80 
      targetPort: 80 
      nodePort: 32700    
 type: NodePort 
Note: NodePort can be selected between 30000- 32727. 
C:hello-world-k8s>kubectl create -f happybirthday.yaml 
deployment.apps/happybirthday created


C:>kubectl get all 
NAME                                         READY   STATUS    RESTARTS   AGE 
pod/happybirthday-584b65cd4-fvhjh            1/1     Running   0          20m 
pod/hello-world-deployment-b9558ff44-24hn7   1/1     Running   0          35m 
pod/hello-world-deployment-b9558ff44-5jbqs   1/1     Running   0          35m 
NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE 
service/happybirthday   NodePort    10.111.3.87            80:32700/TCP   30s 
service/hello-world     NodePort    10.108.12.73           80:30081/TCP   35m 
service/kubernetes      ClusterIP   10.96.0.1              443/TCP        79m 
NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE 
deployment.apps/happybirthday            1/1     1            1           20m 
deployment.apps/hello-world-deployment   2/2     2            2           35m 
NAME                                               DESIRED   CURRENT   READY   AGE 
replicaset.apps/happybirthday-584b65cd4            1         1         1       20m 
replicaset.apps/hello-world-deployment-b9558ff44   2         2         2       35m 
C:>minikube service list 
C:>minikube service happybirthday
区块链

Kubernetes的应用

Kubernetes 允许多个容器同时运行。开发人员为这些容器构建一个部署,定义副本的数量,然后提供一组人类可以理解的指令。

由多个云基础架构支持,可以在任何地方运行。它节省了资金,因为它通过为使用 K8s 的公司使用硬件来优化基础设施资源。

它始终监控节点和容器的健康状况。根据 Container 调查,一半的受访者在其生产环境中使用 Kubernetes。

Kubernetes 和 Amazon EC2

Kubernetes 使用部署、维护和扩展流程来管理 Amazon EC2 的集群、计算实例并在这些实例上运行容器。

它允许您使用相同的工具集执行任何容器化应用程序。Amazon Elastic Kubernetes Services (EKS) 管理 Kubernetes 控制平面。


Kubernetes 和 Apache Spark

Apache Spark 是一个免费和开源的分布式计算框架。借助机器集群,Spark 可以管理大型数据集。

真实世界的例子

我们将使用 kubectl apply minus f 从 LinkedIn 学习练习文件中部署一些示例基础设施,并且我们在练习文件中有一个名为 sample-infrastructure .yaml 的文件。让我们来测试一下。它正在生成命名空间并部署大量 pod。

kubectl apply -f sample-infrastructure.yaml

因此,当您在部署后运行 kubectl get pods 时,它看起来有点奇怪,因为我们刚刚生成了 pod,但我们在这里看不到任何 pod。这是因为在这种情况下,我们已经在各种命名空间中部署了 pod。让我们看看到目前为止我们创建的命名空间。

C:hello-world-k8s>kubectl get pods 
NAME                                     READY   STATUS    RESTARTS      AGE 
happybirthday-584b65cd4-fvhjh            1/1     Running   1 (13m ago)   3d7h 
hello-world-deployment-b9558ff44-24hn7   1/1     Running   1 (13m ago)   3d8h 
hello-world-deployment-b9558ff44-5jbqs   1/1     Running   1 (13m ago)   3d8h

我们将使用 Kubectl 在新屏幕上执行此操作以获取命名空间。结果,各种命名空间,例如 auth、cart 和 catalog 都是在 40 秒前形成的。Kube-public、Kube-system 等只是最近才出现。这里需要注意的是,当您执行 kubectl get pods 等命令时,默认命名空间将始终从默认命名空间中提取数据。默认情况下,您的机器上会安装 Kubernetes 或 Minikube。

C:hello-world-k8s>kubectl get namespaces 
NAME              STATUS   AGE 
auth              Active   6m41s 
cart              Active   6m41s 
catalog           Active   6m40s 
default           Active   3d8h 
infra             Active   6m38s 
kube-node-lease   Active   3d8h 
kube-public       Active   3d8h 
kube-system       Active   3d8h 
purchasing        Active   6m38s 
quote             Active   6m39s 
social            Active   6m41s 
web               Active   6m42s

如果您运行 Kubectl,获取 pod 并选择 cart 命名空间,您将看到命名空间的负 n,并且命名空间将称为 cart。我们还可以使用 kubectl 来获取 pod 并减去所有 dash 命名空间以查看所有命名空间ace。它返回所有基础设施,包括 heapster、influxdb 以及在 Kube-system 命名空间中运行的其他服务、其他命名空间、报价、社交等。

kubectl get pods -n cart
NAME           READY   STATUS    RESTARTS   AGE
cart-dev       1/1     Running   0          13m
cart-prod      1/1     Running   0          13m
cart-staging   1/1     Running   0          13m
C:hello-world-k8s>kubectl get pods --all-namespaces

我们可以使用 kubectl 在没有 O 的情况下获取 pod。它为我们提供了更多信息,特别是 IP 和节点信息。其他输出格式也可用。

C:hello-world-k8s>kubectl get pods -o wide --all-namespaces

结论

区块链是一种可以防止欺诈的新兴技术。我们可以在 docker 和 Kubernetes 机器上运行应用程序。在本文中,我们的目标是通过 Docker 和 Kubernetes 部署应用程序。

关键要点

1.我们详细讨论了区块链的含义以及为什么我们需要区块链。您现在必须知道如何定义区块链,我们的数据以块的形式存储在其中。

2. 区块链在各个行业的用途。我们看到在医疗、银行领域,我们可以最大限度地防止欺诈的发生。

3. 我们看到了如何在 windows 的 docker hub 上部署我们的应用程序。一旦将 docker 安装在 Windows 上,就更容易了。

4. 我们提到了加密货币的定义,一些是如何形成的,以及一些加密货币、比特币和以太坊的例子。

5.我们提到了Kubernetes以及如何一步一步安装它。安装起来并不容易,但如果我们一步一步来,也不难。

6.我们讨论Kubernetes和docker hub的区别。

7. 我们采用了一些名为 Minikube 和 Kubectl 的术语。阅读完这篇文章后,您现在必须能够定义它们、为什么我们需要安装以及关于 Kubetcl。

8. 为什么我们需要 Kubernetes?我们可以看到 Kubernetes 和 docker 引擎的使用。

9. 我们使用了一些现实世界的例子。


原文标题:Blockchain and Deploying Applications on Docker and Kubernetes

原文作者:Sonia Singla 

原文地址:https://www.analyticsvidhya.com/blog/2022/10/blockchain-and-deploying-applications-on-docker-and-kubernetes/



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论