作者:玄明Hanko 2023-11-06 08:20:35
云计算
云原生 Kubernetes 服务有四种类型:ClusterIP、NodePort、LoadBalancer 和ExternalName。服务Spec中的type 属性决定了服务如何暴露给网络。
10年积累的成都网站设计、成都网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站制作后付款的网站建设流程,更有蒲县免费网站建设让你可以放心的选择与我们合作。
k8s发布应用的两种方式:
配置部署:包含应用名称、容器镒、pod数量、Service非常的方便,不想设置配置yaml的可以很方便的部署。
点击部署就成功了k8s应用的部署了。部署后可以看到相应的deployment、pod、service等状态和信息。
vim nginx-namespace.yaml
apiVersion: v1 #类型为Namespace
kind: Namespace #类型为Namespace
metadata:
name: ns-test #命名空间名称
labels:
name: label-test #pod标签
执行:
#创建
kubectl create -f nginx-namespace.yaml
#查询
kubectl get namespace
一般不直接create pod,而是通过controller来创建pod。deployment为其中一种controller。
vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: ns-test
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
执行:
#创建
kubectl create -f nginx-deployment.yaml
#查询。查询时需要等待一会,此时会下载镜像需要时间
kubectl get deployment -n ns-test
#或
kubectl get pods -n ns-test
可以看到"replicas: 3",所以有3个pod并且每个pod只有一个容器。都正常启动。
接下来看看如何访问,查看访问的端口:
kubectl get pods -o wide -n ns-test #-o wide 展开的意思
这时已经可以访问了,就是通过虚拟ip来端口。
如下图,只要集群范围内的机器就可以直接通过IP访问了。
那问题来了,这么多虚拟ip,每次pod重建还会重新生成,那怎么办呢?
看下面的servcie。
vim nginx-service.yaml:
apiVersion: v1
kind: Service
metadata:
namespace: ns-test
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
执行:
kubectl apply -f nginx-service.yaml
kubectl get svc nginx-service -o wide -n ns-test
可以看到有一个cluster-ip,通过这个端口+端口就可以负载到之前3个节点的nginx了。
当然cluster-ip也只能在集群内的机器访问。再结合nginx或域名就可以向外提供负载均衡访问了。
可以看到cluster-ip虽然有负载均衡的功能但还是不能外网访问k8s部署的应用,那如何才能直接外网能访问k8s部署的应用呢?
设置service为nodeport方式,如下:
apiVersion: v1
kind: Service
metadata:
namespace: ns-test
name: nginx-service
spec:
selector:
app: nginx
ports:
- nodePort: 30000
protocol: TCP
port: 80
targetPort: 80
type: NodePort
其中type: NodePort另外想指定端口也可以加上nodePort: 30000。这样就可以通过主机ip+nodePort的访问k8s部署的应用了。
执行:
kubectl apply -f nginx-service.yaml
kubectl get svc nginx-service -o wide -n ns-test
可以看到我使用的是我主机的ip+nodePort可以直接访问到nginx了。
Kubernetes 服务有四种类型:ClusterIP、NodePort、LoadBalancer 和ExternalName。服务spec中的type 属性决定了服务如何暴露给网络。
网站题目:Kubernetes部署应用(Nginx)的两种方式,你更喜欢哪一种?
当前地址:http://www.csdahua.cn/qtweb/news19/251369.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网