作为第一个应用,我们将在一个EKS(Amazon Elastic Kubernetes Service)集群上启动一个基本的nginx。
所需条件:我们要在这个新的命名空间里部署这个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 上成功部署了第一个微服务,干得不错!
参考链接: