云原生 |kubectl expose 发布 ClusterIP NodePort服务

1.kubectl create deployment创建pod

[root@k8s-master-1 ~]# kubectl create deployment myweb --image=nginx -r 2

查看deployment

[root@k8s-master-1 ~]# kubectl get deployment
NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
myweb                    2/2     2            2           114s

查看myweb已经启动

[root@k8s-master-1 ~]# kubectl get pod -n default
NAME                                      READY   STATUS    RESTARTS       AGE
myweb-d5b9458bc-k9l4v                     1/1     Running   0              <invalid>
myweb-d5b9458bc-nxdcq                     1/1     Running   0              <invalid>
nfs-client-provisioner-5548ffc98f-b5h42   1/1     Running   33 (68m ago)   6d5h

2.kubectl expose命令创建svc

使用默认发布出来的服务是clusterIP,只能K8S内部访问

[--protocol=TCP|UDP|SCTP],默认是TCP

命令格式
Usage:
  kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=number-or-name]
[--name=name] [--external-ip=external-ip-of-service] [--type=type] [options]

kubectl expose deployment myweb --port=80 --target-port=80 --name=myweb-svc
#deployment myweb :控制器名称
#–port=80 :新建svc服务对外的端口号
#–target-port=80 :svc服务后容器的端口号
#–name=myweb-svc :给容器定义名称

使用kubectl expose命令创建svc

[root@k8s-master-1 ~]# kubectl expose deployment myweb --port=80 --target-port=80 --name=myweb-svc
 kubectl get svc
kubectl describe svc myweb-svc

3.kubectl edit命令修改svc,访问改成NodePort

(将type=ClusterIP修改成NodePort),此修改后,则可以使用nodeIP:port进行访问

[root@k8s-master-1 ~]# kubectl edit svc myweb-svc
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2023-03-06T07:04:02Z"
  labels:
    app: myweb
  name: myweb-svc
  namespace: default
  resourceVersion: "10035139"
  uid: 6ccf7be9-3ec3-4bbb-9392-dcc1c7d5a2b2
spec:
  clusterIP: 10.108.184.129
  clusterIPs:
  - 10.108.184.129
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  ipFamilyPolicy: SingleStack
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: myweb
  sessionAffinity: None
  type: ClusterIP #修改成NodePort
status:
  loadBalancer: {}

查看此时的svc已修改成NodePort

[root@k8s-master-1 ~]# kubectl get svc -o wide
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE   SELECTOR
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        59d   <none>
myweb-svc    NodePort    10.108.184.129   <none>        80:30074/TCP   11m   app=myweb

查看node ip

[root@k8s-master-1 ~]# kubectl get node -o wide

使用node ip:nodeport进行访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值