1. 程式人生 > 其它 >k8s_使用k8s部署部落格系統svc、secret、configmap(三)

k8s_使用k8s部署部落格系統svc、secret、configmap(三)

k8s service secret configmap

service

service是抽象Pod對外提供服務的地址,將其固化的作用;遮蔽因pod的創刪以及擴縮容帶來ip變化。service通過自身定義檔案的selector的標籤配置匹配到需要提供服務的物件。

下面是整個wordpress系統部署的service定義檔案,其中的selector配置的label是選擇符合該label的pod並對其提供對外訪問的服務

#api版本號
apiVersion: v1
#資源型別
kind: Service
metadata:
    #service自身的名稱
    name: mysql
    #service自身的標籤
    labels:
        app: mysql
spec:
    ports:
      #service對外開放的埠
      
- port: 3306 #service關聯資源對應container的埠,該埠與上面的port是繫結關係 targetPort: 3306 protocol: TCP #service通過選擇器配置的兩個label選擇符合這兩個標籤的pod,為這些pod提供對外服務 selector: app: wordpress tier: mysql-pod #service型別,ClusterIp只對內部提供服務,nodePort型別可以對外提供服務 type: ClusterIP --- apiVersion: v1 kind: Service metadata: name: wordpress labels: app: wordpress spec: ports:
- port: 80 nodePort: 30008 targetPort: 80 protocol: TCP selector: app: wordpress tier: frontend-pod type: NodePort

建立service服務

[root@k8s-01 ~]# kubectl create -f service_mysql_wp.yml

查詢service

[root@k8s-01 ~]# kubectl get service -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 62d <none>
mysql ClusterIP 10.1.103.194 <none> 3306/TCP 50d app=wordpress,tier=mysql-pod
wordpress NodePort 10.1.43.26 <none> 80:30008/TCP 50d app=wordpress,tier=frontend-pod

secret

secret資源是用來管理密碼的,這裡以管理mysql的密碼為例進行演示

apiVersion: v1
kind: Secret
metadata:
    name: mysql-pass
type: Opaque
#Opaque 隱藏,該型別使用kubectl的任何檢視命令都看不到下面data部分定義的密碼資料
data:
    #敏感資料通過base64編碼處理echo -n $str | base64
    #password: root 
    password: cm9vdA==
    #可以設定多組資料

#建立secret物件
[root@k8s-01 ~]# kubectl create -f secret_mysql.yml

#檢視建立的secret資源
[root@k8s-01 ~]# kubectl get secret
NAME                  TYPE                                  DATA   AGE
default-token-c8jx9   kubernetes.io/service-account-token   3      62d
mysql-pass            Opaque                                1      50d

[root@k8s-01 ~]# kubectl describe secret mysql-pass
Name:         mysql-pass
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
password:  4 bytes

configmap

用於將系統的環境變數、配置引數使用資源物件交由k8s叢集進行管理

配置檔案解析即資源的建立和檢視,整個wordpress系統中mysql需要設定dbname資訊,這裡以該引數配置為例

apiVersion: v1
kind: ConfigMap
metadata:
    name: mysql-config
data:
    db-name: wordpress
    #可以設定多組資料,數值型別一定要使用""引起來,否則會報錯
    userage: "18"
    dbuser: root

#建立configmap
[root@k8s-01 ~]# kubectl create -f mysql_configmap.yml

#查詢建立的資源
[root@k8s-01 ~]# kubectl get configmap -o wide
NAME           DATA   AGE
mysql-config   3      50d
[root@k8s-01 ~]# kubectl describe configmap mysql-config
Name:         mysql-config
Namespace:    default
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"v1","data":{"db-name":"wordpress","dbuser":"root","userage":"18"},"kind":"ConfigMap","metadata":{"annotations":{},"name":"m...

Data
====
db-name:
----
wordpress
dbuser:
----
root
userage:
----
18
Events:  <none>