介绍
正在转型的国家机构之一 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

打开窗口外壳后,键入 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.exekubectl 校验和文件
curl -LO " https://dl.k8s.io/v1.23.0/bin/windows/amd64/kubectl.exe.sha256 "将 CertUtil 的输出与校验和文件进行比较
CertUtil -hashfile kubectl.exe SHA256type 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 管理器并单击虚拟交换机管理器。

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

之后,打开控制面板,点击网络和Internet,网络和共享中心,然后点击新建虚拟交换机和属性。然后转到选项卡共享并允许它通过选择并选择 minikube 并点击 OK 按钮进行连接。
最后,在命令行上,输入 minikube start
在输入之前,请确保 Docker Daemon 正在运行。否则会显示错误。
C:>minikube start配置类型后
C:>kubectl get nodesNAME 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 4m43sC:>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 createdC:>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/




