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进行访问