Kevin_306

38 k8s-18.service 创建服务

1.1  创建一个Service

01.//创建nginx-svc.yml文件 
[root@k8s-master01 ~]# vim nginx-svc.yml
//yml文件内容:
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-svc
  name: nginx-svc
spec:
  ports:
  - name: http # Service端口的名称
    port: 80 # Service自己的端口, servicea调用serviceb,http://serviceb,http://serviceb:8080
    protocol: TCP #协议,支持UDP,TCP,STCP;default:TCP
    targetPort: 80 # 后端应用的端口
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: nginx
  sessionAffinity: None
  type: ClusterIP

[root@k8s-master01 ~]# kubectl create -f nginx-svc.yml 
service/nginx-svc created
[root@k8s-master01 ~]# kubectl get svc

02.//查看创建的新service,nginx-svc
[root@k8s-master01 ~]#kubectl get svc
03.//查看端口号并执行curl访问 [root@k8s-master01 ~]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE nginx-66bbc9fdc5-j2zqc 1/1 Running 0 63m 10.244.122.152 k8s-master02 …...省略…… [root@k8s-master01 ~]# curl 10.244.122.152
04.//列出当前命名空间下的所有 services,注意nginx-svc的ClusterIP
05.//执行curl访问ClusterIP可以成功 [root@k8s-master01 ~]# curl 10.104.33.36 (#ClusterIP)
06.//获取pod并查看相关的svc 日志 [root@k8s-master01 ~]# kubectl get pod [root@k8s-master01 ~]# kubectl logs nginx-66bbc9fdc5-j2zqc 10.244.32.128 - - [21/Sep/2020:14:52:47 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.61.1" "-" 虽然ClusterIP也可以成功访问,但是我们不建议使用ClusterIP访问,我们建议使用pod的NAME:nginx-svc访问 07.//执行结果 [root@k8s-master01 ~]# kubectl get svc [root@k8s-master01 ~]# kubectl get pod [root@k8s-master01 ~]# kubectl exec -it busybox -- sh / # wget http://nginx-svc / # cat index.html 08.//不在同一个需要加default,之前的index.html存在了先删除,再使用wget获取并查看 [root@k8s-master01 ~]# kubectl exec -it busybox -- sh / # rm -f index.html ##之前的index.html存在了先删除## / # wget http://nginx-svc.default ##使用wget获取 Connecting to nginx-svc.default (10.104.33.36:80) ##跨网段的需要加default index.html 100% |**********************************************************************************************| 612 0:00:00 ETA / # cat index.html <!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> 09.//不建议使用这种模式,这种有点像使用了网状的节点,一个扣着一环,一个点出问题很容易影响其他环节; //所以通过IP访问不安全,删除版本或者更新迭代新版本发布,IP是会变的; 10.//两个pod都删除做下测试,两个删除就会重建,重建podIP就可能会变化; [root@k8s-master01 ~]# kubectl get pod -o wide [root@k8s-master01 ~]# kubectl delete pod nginx-66bbc9fdc5-j2zqc [root@k8s-master01 ~]# kubectl delete pod nginx-66bbc9fdc5-jj86d
11.// 重建后对比下,IP果然变了 [root@k8s-master01 ~]# kubectl get pod –owide
12.//使用名称访问成功 [root@k8s-master01 ~]# kubectl exec -it busybox – sh / # rm –f index.html / # wget http://nginx-svc Connecting to nginx-svc (10.104.33.36:80) index.html 100% |**********************************************************************************************| 612 0:00:00 ETA / # exit [root@k8s-master01 ~]# kubectl get svc [root@k8s-master01 ~]# kubectl get ep 10.104.33.36这个是ClusterIP; 13.//假设删其中一个pod #kubectl delete pod nginx-66bbc9fdc5-85cfg; 14.//删除之后看不到删除的pod对应的IP了;yaml输出nginx-svc可靠ip有什么变化 [root@k8s-master01 ~] # kubectl get ep nginx-svc –oyaml 15.// 删除之后会重新添加新的pod,新的pod已经自动添加进来了 //这样后端service我们无需关心ip地址,service name访问更可靠; 目前我们这个只能在集群之内访问,不能从外部访问; 16.//新启用的IP:10.244.195.32也可以对的上; //这样后端service我们无需关心ip地址,service name访问更可靠; 目前我们这个只能在集群之内访问,不能从外部访问;// 

 

posted on 2022-05-13 01:41  熊猫小虾  阅读(131)  评论(0编辑  收藏  举报

导航