1.查看namespace(命名空间)中的Service(服务)
# kubectl get namespace
NAME STATUS AGE
default Active 25d
kube-node-lease Active 25d
kube-public Active 25d
kube-system Active 25d
2.查看Service的信息
# kubectl get service -A
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 36d
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 36d
3.部署DNS和外网访问的httpd编辑yaml格式
# vi httpd-svc.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: httpd2
namespace: kube-public
spec:
selector:
matchLabels:
run: httpd2
replicas: 2
template:
metadata:
labels:
run: httpd2
spec:
containers:
- name: httpd2
image: httpd
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: httpd2-svc
namespace: kube-public
spec:
type: NodePort
selector:
run: httpd2
ports:
- protocol: TCP
nodePort: 30000
port: 8080
targetPort: 80
# kubectl apply -f httpd-svc.yml
deployment.apps/httpd2 created
service/httpd2-svc created
4. 查看httpd和httpd-svc的信息
# kubectl get service -A
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 36d
kube-public httpd2-svc NodePort 10.96.189.153 <none> 8080:30000/TCP 34s
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 36d
# kubectl get deployment --namespace=kube-public
NAME READY UP-TO-DATE AVAILABLE AGE
httpd2 2/2 2 2 95s
# kubectl get pod --namespace=kube-public
NAME READY STATUS RESTARTS AGE
httpd2-86b9666466-g5kjz 1/1 Running 0 3m40s
httpd2-86b9666466-qprq9 1/1 Running 0 3m40s
5.测试httpd的外网的IP:端口
# curl 172.25.0.20:30000
<html><body><h1>It works!</h1></body></html>
# curl 172.25.0.30:30000
<html><body><h1>It works!</h1></body></html>