38 k8s-18.service

互联网 2022/5/13 6:22:15

1.1 创建一个Service01.//创建nginx-svc.yml文件 [root@k8s-master01 ~]# vim nginx-svc.yml //yml文件内容: apiVersion: v1 kind: Service metadata:labels:app: nginx-svcname: nginx-svc spec:ports:- name: http # Service端口的名称port: 80 # 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访问更可靠;
目前我们这个只能在集群之内访问,不能从外部访问;// 

 

随时随地学软件编程-关注百度小程序和微信小程序
关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[38 k8s-18.service]http://www.zyiz.net/tech/detail-320542.html

赞(0)
关注微信小程序
程序员编程王-随时随地学编程

扫描二维码或查找【程序员编程王】

可以随时随地学编程啦!

技术文章导航 更多>