Kubernetes 入門:運行有狀態(tài)服務(wù)

本文以 WordPress 為例,演示在 Kubernetes 集群中運行有狀態(tài)服務(wù)乡括,以及相關(guān)命令和概念。

為 MYSQL 密碼創(chuàng)建 Secret

Secret 是一個對象,存儲一系列的敏感信息阻逮,比如 password 和 key。

創(chuàng)建 Secret 對象

kubectl create secret generic mysql-pass --from-literal=password=YOUR-PASSWORD

YOUR-PASSWORD 替換為你想實際應(yīng)用的密碼

查看 Secrets

kubectl get secrets
NAME                  TYPE                                  DATA      AGE
default-token-jdn58   kubernetes.io/service-account-token   3         1d
mysql-pass            Opaque                                1         6s

部署 MySQL

在 k8s 中秩彤,PersistentVolumeClaims(簡稱 PVC) 和 PersistentVolumes(簡稱PV) 用于數(shù)據(jù)的持久化存儲叔扼。

  • PV:持久化卷,是集群的一部分漫雷。就像 Node 一樣瓜富,屬于集群中的資源。
  • PVC:用戶對存儲的請求降盹。它與 Pod 相似食呻,Pod 消耗 Node 資源,PVC 消耗 PV 資源澎现。

1、新建 MySQL 部署文件 mysql-deployment.yaml

apiVersion: v1
kind: Service
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  ports:
    - port: 3306
  selector:
    app: wordpress
    tier: mysql
  clusterIP: None
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
  labels:
    app: wordpress
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: wordpress
        tier: mysql
    spec:
      containers:
      - image: mysql:5.6
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-pass
              key: password
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pv-claim

2每辟、部署 MySQL

kubectl create -f mysql-deployment.yaml

3剑辫、確認 PersistentVolume 是動態(tài)配置的

kubectl get pvc
NAME             STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
mysql-pv-claim   Bound     pvc-22264d66-543c-11e8-993e-080027736407   10Gi       RWO            standard       1m

4、確認 Pod 正常運行

kubectl get pod
NAME                               READY     STATUS    RESTARTS   AGE
wordpress-mysql-7ddd5d59dd-njv2b   1/1       Running   0          5m

部署 WordPress

和 MySQL 類似渠欺,WordPress 也需要創(chuàng)建 Deployment 和 Service 妹蔽,也需要 PVC 做持久化存儲、Secret 做密碼保密挠将,另外胳岂,WordPress 需要暴露給集群外部的流量使用,還需要配置 type: NodePort舔稀。

1乳丰、創(chuàng)建 WordPress 部署文件 wordpress-deployment.yaml

apiVersion: v1
kind: Service
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  ports:
    - port: 80
  selector:
    app: wordpress
    tier: frontend
  type: LoadBalancer
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wp-pv-claim
  labels:
    app: wordpress
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: frontend
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: wordpress
        tier: frontend
    spec:
      containers:
      - image: registry.docker-cn.com/library/wordpress:4.8-apache
        name: wordpress
        env:
        - name: WORDPRESS_DB_HOST
          value: wordpress-mysql
        - name: WORDPRESS_DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-pass
              key: password
        ports:
        - containerPort: 80
          name: wordpress
        volumeMounts:
        - name: wordpress-persistent-storage
          mountPath: /var/www/html
      volumes:
      - name: wordpress-persistent-storage
        persistentVolumeClaim:
          claimName: wp-pv-claim

2、部署 WordPress

kubectl create -f wordpress-deployment.yaml

3内贮、稍作等待产园,查看整個 WordPress 服務(wù),可以看到 MySQL 和 WordPress 均正常工作

NAME                                   READY     STATUS    RESTARTS   AGE
pod/wordpress-5d7d6dfb58-mxr9k         1/1       Running   0          4m
pod/wordpress-mysql-7ddd5d59dd-njv2b   1/1       Running   0          24m

NAME                      TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes        ClusterIP      10.96.0.1       <none>        443/TCP        1d
service/wordpress         LoadBalancer   10.107.47.102   <pending>     80:30435/TCP   4m
service/wordpress-mysql   ClusterIP      None            <none>        3306/TCP       24m

NAME                              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/wordpress         1         1         1            1           4m
deployment.apps/wordpress-mysql   1         1         1            1           24m

NAME                                         DESIRED   CURRENT   READY     AGE
replicaset.apps/wordpress-5d7d6dfb58         1         1         1         4m
replicaset.apps/wordpress-mysql-7ddd5d59dd   1         1         1         24m

提醒: Minikube 只能通過 NodePort 暴露服務(wù). EXTERNAL-IP 永遠是 <pending>.

4夜郁、訪問 WordPress

minikube service wordpress

移除 WordPress

刪除 Secret

kubectl delete secret mysql-pass

刪除 Deployment

kubectl delete deployment -l app=wordpress

刪除 Service

kubectl delete service -l app=wordpress

刪除 PVC

kubectl delete pvc -l app=wordpress

-l, --selector='': 選擇器過濾, 不包含那些未初始化的.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末什燕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子竞端,更是在濱河造成了極大的恐慌屎即,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異技俐,居然都是意外死亡乘陪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門虽另,熙熙樓的掌柜王于貴愁眉苦臉地迎上來暂刘,“玉大人,你說我怎么就攤上這事捂刺∫ゼ穑” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵族展,是天一觀的道長森缠。 經(jīng)常有香客問我,道長仪缸,這世上最難降的妖魔是什么贵涵? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮恰画,結(jié)果婚禮上宾茂,老公的妹妹穿的比我還像新娘。我一直安慰自己拴还,他們只是感情好跨晴,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著片林,像睡著了一般端盆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上费封,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天焕妙,我揣著相機與錄音,去河邊找鬼弓摘。 笑死焚鹊,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的韧献。 我是一名探鬼主播寺旺,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼势决!你這毒婦竟也來了阻塑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤果复,失蹤者是張志新(化名)和其女友劉穎陈莽,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡走搁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年独柑,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片私植。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡忌栅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出曲稼,到底是詐尸還是另有隱情索绪,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布贫悄,位于F島的核電站瑞驱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏窄坦。R本人自食惡果不足惜唤反,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸭津。 院中可真熱鬧彤侍,春花似錦、人聲如沸逆趋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽父泳。三九已至,卻和暖如春吴汪,著一層夾襖步出監(jiān)牢的瞬間惠窄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工漾橙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留杆融,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓霜运,卻偏偏與公主長得像脾歇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子淘捡,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容