Kubernetes Service服務(wù)配置

svc:相當(dāng)于負(fù)載均衡器,將請求分發(fā)給pod。

1.創(chuàng)建服務(wù),例如mysql+wordpress

1.1創(chuàng)建pv,pvc
#創(chuàng)建pv,pvc 詳細(xì)查看:http://m.itdecent.cn/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.創(chuàng)建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.創(chuàng)建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.創(chuàng)建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.創(chuàng)建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

發(fā)現(xiàn)服務(wù)

#變量的方式發(fā)現(xiàn)。
#1.只能獲取相同namespace里的變量
#2.變量的獲取有先后順序,引用的變量必須要先創(chuàng)建,
#例如wordpress引用mysql的MYSQL_SERVICE_HOST,則必須先創(chuàng)建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的方式發(fā)現(xiàn)
#在kube-system里有dns,可以自動發(fā)現(xiàn)所有命名空間里的服務(wù)的clusterIP,
#所以在同一個命名空間里,一個服務(wù)訪問另外一個服務(wù)的時候,可以直接通過服務(wù)名來訪問
#只要創(chuàng)建了一個服務(wù)(不管在哪個ns里創(chuàng)建的),都會自動向kube-system里的DNS注冊
#如果是不同的命名空間,可以通過 服務(wù)名.命名空間名 來訪問
kubectl run busybox --rm -it --image=busybox sh

發(fā)布服務(wù):指讓集群之外的主機(jī)能訪問服務(wù)
可以通過以下方式訪問

名稱 作用
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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容