Kubernets

Kubernetes Service服务配置

2019-04-17  本文已影响2人  条子在洗澡

svc:相当于负载均衡器,将请求分发给pod。

1.创建服务,例如mysql+wordpress

1.1创建pv,pvc
#创建pv,pvc 详细查看:https://www.jianshu.com/p/a74910c84398
[root@k8s-master1 service]# kubectl get pv
NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM               STORAGECLASS   REASON    AGE
pv0001    5Gi        RWO            Recycle          Bound     default/dbclaim                              54s
pv0002    3Gi        RWO            Recycle          Bound     default/blogclaim                            9s
[root@k8s-master1 service]# kubectl get pvc
NAME        STATUS    VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
blogclaim   Bound     pv0002    3Gi        RWO                           9s
dbclaim     Bound     pv0001    5Gi        RWO                           24s
1.2.创建mysql pod
apiVersion: v1
kind: Pod
metadata:
  name: mysql
  labels:
    name: mysql
spec:
  containers:
    - image: hub.c.163.com/library/mysql:latest
      name: mysql
      env:
        - name: MYSQL_ROOT_PASSWORD
          value: redhat
        - name: MYSQL_USER
          value: tom
        - name: MYSQL_PASSWORD
          value: redhat
        - name: MYSQL_DATABASE
          value: blog
      ports:
        - containerPort: 3306
          name: mysql
      volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql/data
  volumes:
    - name: mysql-persistent-storage
      persistentVolumeClaim:
        claimName: dbclaim
1.3.创建wordpress pod
#172.30.255.198 地址为mysql的svc地址
apiVersion: v1
kind: Pod
metadata:
  name: wordpress
  labels:
    name: wordpress
spec:
  containers:
    - image: hub.c.163.com/library/wordpress:latest
      name: wordpress
      env:
        - name: WORDPRESS_DB_USER
          value: root
        - name: WORDPRESS_DB_PASSWORD
          value: redhat
        - name: WORDPRESS_DB_NAME
          value: blog
        - name: WORDPRESS_DB_HOST
          # this is the name of the mysql service fronting the mysql pod in the same namespace
          # expands to mysql.<namespace>.svc.cluster.local  - where <namespace> is the current namespace
          value: 172.30.255.198
      ports:
        - containerPort: 80
          name: wordpress
      volumeMounts:
        - name: wordpress-persistent-storage
          mountPath: /var/www/html
  volumes:
    - name: wordpress-persistent-storage
      persistentVolumeClaim:
       claimName: dbclaim

1.4.创建mysql service
apiVersion: v1
kind: Service
metadata:
  labels:
    name: mysql
  name: mysql
spec:
  ports:
    # the port that this service should serve on
    - port: 3306
  # label keys and values that must match in order to receive traffic for this service
  selector:
    name: mysql

1.5.创建wordpres service
apiVersion: v1
kind: Service
metadata:
  labels:
    name: wpfrontend
  name: wpfrontend
spec:
  ports:
    # the port that this service should serve on
    - port: 5055
      targetPort: 80
  # label keys and values that must match in order to receive traffic for this service
  selector:
    name: wordpress
  type: LoadBalancer

发现服务

#变量的方式发现。
#1.只能获取相同namespace里的变量
#2.变量的获取有先后顺序,引用的变量必须要先创建,
#例如wordpress引用mysql的MYSQL_SERVICE_HOST,则必须先创建mysql,生成变量MYSQL_SERVICE_HOST
env: 
  - name: WORDPRESS_DB_USER
    value: root 
  - name: WORDPRESS_DB_PASSWORD
    value: redhat 
  - name: WORDPRESS_DB_NAME
    value: blog
  - name: WORDPRESS_DB_HOST
    value: $(MYSQL_SERVICE_HOST)


#DNS的方式发现
#在kube-system里有dns,可以自动发现所有命名空间里的服务的clusterIP,
#所以在同一个命名空间里,一个服务访问另外一个服务的时候,可以直接通过服务名来访问
#只要创建了一个服务(不管在哪个ns里创建的),都会自动向kube-system里的DNS注册
#如果是不同的命名空间,可以通过 服务名.命名空间名 来访问
kubectl run busybox --rm -it --image=busybox sh

发布服务:指让集群之外的主机能访问服务
可以通过以下方式访问

名称 作用
NodePort 其他
LoadBalancer 其他
ExternalName 其他
ClusterIP 其他
ingress 其他
ingress外部访问
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress- controller:0.21.0

wget https://raw.githubusercontent.com/kubernetes/ingress- nginx/master/deploy/mandatory.yaml

kubectl expose deployment nginx-ingress-controller --name=ingress-nginx --type=NodePort

上一篇下一篇

猜你喜欢

热点阅读