k8s_使用k8s部署部落格系統svc、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>