k8s的入门教程4 --对外发布服务nodePort和Ingress

本文介绍了如何在Kubernetes中对外发布服务,包括使用NodePort和Ingress两种方式。首先,详细讲解了NodePort的设置过程,通过创建Deployment和Service来实现外部访问。接着,引入Ingress概念,描述了Ingress控制器的作用,并展示了安装和验证Ingress服务的步骤。通过Ingress,可以实现基于路径的外部访问控制,提高集群服务的可访问性和管理性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对外发布服务

可以让集群外访问集群内部的服务,服务可能来自第三方或者其他团队,无法把所有服务都放入集群内部,这时候我们就需要集群内部和集群外部的服务能够实现互访

-对外提供服务:nodePort 

-对外提供服务:ingress

nodePort发布服务

语法格式:

kubectl expose 资源类型 资源名称 --type=NodePort  --port=80 --target-port=80 --name=服务名称

[root@kubemaseter ~]# vim t6.yaml 
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-apache
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: my-apache
    spec:
      containers:
      - image: 192.168.1.100:5000/myos:httpd
        name: my-apache
        volumeMounts:
        - mountPath: /etc/httpd/conf/httpd.conf
          name: config
          subPath: httpd.conf
        - mountPath: /var/www/html
          name: site-data
      volumes:
       - name: config
         configMap:
           name: my-httpd
       - name: site-data
         persistentVolumeClaim:
           claimName: pvc-nfs
---
apiVersion: v1
kind: Service
metadata:
  name: apche
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: my-apache
  type: NodePort
 

[root@kubemaseter ~]# kubectl create -f t6.yaml 
deployment.extensions "my-apache" created
service "apche" created
[root@kubemaseter ~]# kubectl get  service   #查看服务可以看出80端口转到了32587端口,我们可以访问32578端口
NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
apche          NodePort    10.254.0.197    <none>        80:32587/TCP   9m
[root@kubemaseter ~]# kubectl get pod -o wide
NAME                         READY     STATUS    RESTARTS   AGE       IP            NODE
my-apache-75644bd6d9-t9v7m   1/1       Running   0          5m        10.254.95.5   kubenode1
[root@nfs ~]# curl http://192.168.1.21:31245    #注意pod阶段开在那个阶段就使用那个节点的ip访问,端口访问的是32578端口
<pre>
hello world
hello world
hello world

 

 

Ingress介绍

ingress公开了从集群外部到集群内service路由,可以将Ingress配置为提供服务外部可访问的URL,负载均衡流量

Ingress控制器通常由负载均衡器来实现,必须具有Ingress控制器才能满足Ingress的要求,仅创建资源无效

 

 

 

 

Ingress安装

安装控制器:把镜像导入到私有仓库

[root@registry ~]# curl http://192.168.1.100:5000/v2/_catalog
{"repositories":["defaultbackend","k8s-dns-dnsmasq-nanny-amd64","k8s-dns-kube-dns-amd64","k8s-dns-sidecar-amd64","kubernetes-dashboard-amd64","myos","nginx-ingress-controller","pod-infrastructure"]}

"defaultbackend"  默认后端服务:backend.tar

&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值