kubernetes集群系列资料11--service介绍

一、service案例

vim svc-deploy.yaml
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
apiVersion: apps/v1         #首选extensions/v1beta1
kind: Deployment
metadata:
    name: svc-deployment
    namespace: default
spec:
    replicas: 3
    selector:
        matchLabels:
            app: svc-deployment
            release: stable
    template:                   #以下为嵌套pod的字段;
        metadata:
            labels:
                app: svc-deployment
                release: stable
                env: test
        spec:
            containers:
            - name: svc-deployment
              image: hub.atguigu.com/library/nginx:latest
              ports:
              - name: http
                containerPort: 80
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

vim svc.yaml
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
apiVersion: v1         #首选extensions/v1beta1
kind: Service
metadata:
    name: svc-deployment
    namespace: default
spec:
    type: ClusterIP
    selector:
        app: svc-deployment
        release: stable
    ports:
    - name: http
      port: 80
      targetPort: 80
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

kubectl apply -f svc-deploy.yaml
kubectl apply -f svc.yaml
kubectl get svc;kubectl get deployment;kubectl get rs;kubectl get pod   #查看创建资源;
ipvsadm -ln;curl 10.109.120.103 #查看转发路径;测试:能访问服务;

kubectl delete -f svc.yaml #删除svc资源;因此yaml文件尽量保留,以便后期维护。
sed -i "s/app: svc-deployment/app: svc-deployment1/g" svc.yaml #修改svc模板;
kubectl apply -f svc.yaml;kubectl get svc
curl 10.105.124.206 #再测试,不能访问服务;其原因svc的label于pod的label不一致。
ipvsadm -ln #查看svc转发策略:无。

sed -i "s/app: svc-deployment1/app: svc-deployment/g" svc.yaml
kubectl apply -f svc.yaml;kubectl get svc
curl 10.105.124.206     #测试:能访问服务;

vim svc-headless.yaml
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
apiVersion: v1         #首选extensions/v1beta1
kind: Service
metadata:
    name: svc-deployment-headless
    namespace: default
spec:
    clusterIP: "None"
    selector:
        app: svc-deployment
        release: stable
    ports:
    - name: http
      port: 80
      targetPort: 80
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kubectl apply -f svc-headless.yaml
kubectl get svc;kubectl get pod -n kube-system
yum -y install bind-utils
dig -t A svc-deployment-headless.default.svc.cluster.local. @10.244.0.24  #对域名进行A记录解析。svc创建后,会将“svc的名称.名称空间.集群域名.@coreDNS的IP地址”写入coreDNS中。我们可通过dig命令解析该SVC域名为IP。???如何查询集群域名???


vim svc-nodePort.yaml
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
apiVersion: v1
kind: Service
metadata:
    name: svc-deployment
    namespace: default
spec:
    type: NodePort
    selector:
        app: svc-deployment
        release: stable
    ports:
    - name: http
      port: 80
      targetPort: 80
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kubectl apply -f svc-nodePort.yaml
kubectl get svc             #查看svc的IP及端口;
iptables -t nat -nvL


vim svc-externalName.yaml
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
apiVersion: v1
kind: Service
metadata:
    name: svc-deployment-1
    namespace: default
spec:
    type: ExternalName
    externalName: hub.atguigu.com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kubectl apply -f svc-externalName.yaml
kubectl get svc
dig -t A svc-deployment-1.default.svc.cluster.local. @10.244.0.24

  

原文地址:https://www.cnblogs.com/chalon/p/14897629.html