您的位置:首页 > 文旅 > 旅游 > 武汉软装设计公司_想学服装设计去哪个大学好_2021年搜索引擎排名_申请网站怎么申请

武汉软装设计公司_想学服装设计去哪个大学好_2021年搜索引擎排名_申请网站怎么申请

2024/12/23 16:16:28 来源:https://blog.csdn.net/pcj_888/article/details/144200265  浏览:    关键词:武汉软装设计公司_想学服装设计去哪个大学好_2021年搜索引擎排名_申请网站怎么申请
武汉软装设计公司_想学服装设计去哪个大学好_2021年搜索引擎排名_申请网站怎么申请

环境

  • Rocky Linux9.4 x86_64 VM
  • 安装了Microk8s (参考:Microk8s安装方法)

说明: 其他k8s(例如: k3s, kubernetes)创建Pod的方法和Microk8s没啥区别,可以参考本文

目标

创建一个Nginx的Pod,映射宿主机30000端口到Pod容器的80端口;客户端能通过宿主机30000端口访问Pod容器中的Nginx服务

步骤

从国内源下载nginx:1.27.3镜像, 再导入镜像

Microk8s执行如下命令:

microk8s.ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.27.3
microk8s.ctr images tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.27.3 docker.io/library/nginx:1.27.3

如果是Kubernetes环境,执行如下命令: (和Microk8s大同小异)

ctr -n k8s.io images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.27.3
ctr -n k8s.io images tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.27.3 docker.io/library/nginx:1.27.3

创建nginx的namespace

创建一个新的namespace,名称为nginx,后续在这个namespace下创建Pod

kubectl create ns nginx

创建并应用deployment

创建nginx-deployment.yaml文件,内容如下:

apiVersion: apps/v1
kind: Deployment #指定资源类型
metadata:name: nginx-deployment #指定deployment名称namespace: nginx #指定pod运行的namespace
spec:selector:matchLabels:app: nginxreplicas: 1 # 指定副本数(nginx pod个数)template:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.27.3 #(指定镜像)imagePullPolicy: IfNotPresent #(指定镜像拉取策略, IfNotPresent表示如果本地有就取本地镜像,否则从网络拉取镜像ports:- containerPort: 80 # 容器内暴露的端口

这个yaml文件参考了官方文档: https://kubernetes.io/zh-cn/docs/tasks/run-application/run-stateless-application-deployment/
再应用这个deployment

kubectl apply -f nginx-deployment.yaml
deployment.apps/nginx-deployment created

deployment创建成功后,查看Nginx pod状态如下:

kubectl -n nginx get pods
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-5c7dff4cf7-gbtsr   1/1     Running   0          2m55s

查看当前Nginx deployment的内容

kubectl -n nginx get deploy nginx-deployment -o yaml

创建并应用service, 将宿主机端口(例如30000端口)映射到Pod的80端口

创建nginx-service.yaml文件,主要字段的说明参考注释,文件内容如下:

apiVersion: v1
kind: Service #指定资源类型
metadata:name: nginx-service #指定service的名称namespace: nginx #指定pod运行的namespace
spec:selector:app: nginxtype: NodePortports:- protocol: TCPtargetPort: 80 # Pod容器中的端口,是Nginx程序实际监听的端口port: 80 # 暴露在cluster IP上的端口,提供集群内部访问service的入口, 即clusterIP:portnodePort: 30000 # 指定宿主机的端口, nodePort提供集群外部访问Service的能力

面试题: 说说看Service中port, targetPort, nodePort的作用,有什么区别?

  • port: 暴露在cluster IP上的端口,提供集群内部访问service的入口,即clusterIP:port
  • nodePort: 宿主机端口, 提供集群外部访问Service的能力
  • targetPort: Pod内部端口,是实际应用程序监听的端口

再应用这个service

kubectl apply -f nginx-service.yaml
service/nginx-service created

执行成功后,查看service

kubectl -n nginx get svc
NAME            TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
nginx-service   NodePort   10.152.183.248   <none>        80:30000/TCP   2m32s

可以看出NodePort端口是30000,clusterIp:port为10.152.183.248:80

测试

通过NodePort方式可以访问Nginx

curl localhost:30000
...
<title>Welcome to nginx!</title>
...

通过clusterIp:port方式也可以访问Nginx

curl 10.152.183.248:80
...
<title>Welcome to nginx!</title>
...

删除Nginx Pod

删除之前创建的deployment和service资源即可,方法如下:

kubectl -n nginx delete deploy nginx-deployment
kubectl -n nginx delete svc nginx-service

参考

https://kubernetes.io/zh-cn/docs/tasks/run-application/run-stateless-application-deployment/

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com