在Kubernetes上部署你的第一個應用:Nginx服務器
作为第一个应用,我们将在一个EKS(Amazon Elastic Kubernetes Service)集群上启动一个基本的nginx。
所需条件:- 一个 Kubernetes 集群(你可以参考一下这个链接来创建一个 AWS EKS 集群:这个)
- 能够通过 CLI 访问集群。
我们要在这个新的命名空间里部署这个web服务器。
kubectl 创建一个命名空间 my-nginx-namespace
您可以使用以下命令更新默认命名空间为,避免在每个命令中都指定命名空间,以防止重复指定。
_kubectl config set-context --current --namespace=my-nginx-namespace # 设置当前上下文的命名空间为my-nginx-namespace_
制作部署文件,并应用,
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: my-nginx-namespace
labels:
app: nginx
spec:
replicas: 2 # 指定副本数量为2
selector:
matchLabels:
app: nginx # 标签匹配
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80 # 容器端口为80
注释:此文件定义了如何部署一个名为nginx-deployment
的应用程序,使用的是nginx
镜像,并在my-nginx-namespace
命名空间中运行。
运行Kubernetes命令来应用Nginx部署配置文件:
kubectl apply -f nginx部署.yaml
图片已上传
这个部署使用了 nginx:latest
镜像并运行了 2 个容器(副本数为 2)。
查看Pod是否已创建 kubectl get pods
创建的Pod
曝光这个应用:接下来,我们需要一种方式让这些Pod可见。在Kubernetes里,Service
是用来暴露在一个或多个Pod中运行的网络服务的方法。
# nginx-service.yaml 文件
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
选择器:
app: nginx
端口:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
# 类型: ClusterIP (集群IP)
集群IP服务创建
进入服务器:此服务类型为ClusterIP
,因此只能在集群内部访问。但是,我们可以通过端口转发从本地主机访问该服务,如下:
kubectl port-forward svc/nginx-service 8080:80
此命令用于将Nginx服务的80端口转发到本地的8080端口。
端口转发已开启
该命令将从你机器的 8080
端口到 Kubernetes 集群内的 nginx-service
的 80
端口设置端口映射。
在浏览器中可以通过这个地址访问该服务:<http://127.0.0.1:8080>
本地主机上的Web服务器可以通过某个端口访问.
你刚刚在 Kubernetes 上成功部署了第一个微服务,干得不错!
参考(如有)参考链接:
- https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ Kubernetes 部署概念介绍
- https://kubernetes.io/docs/concepts/services-networking/service/ Kubernetes 服务与网络概念介绍
- https://hub.docker.com/_/nginx Nginx 官方 Docker Hub 仓库
共同學習,寫下你的評論
評論加載中...
作者其他優質文章