天天看點

kubernetes 權威指南學習筆記(1) -- mysql 小例子

mysql 小例子

  1. 建立一個mysql-rc.yaml 檔案
apiVersion: v1
kind: ReplicationController # 副本控制器RC
metadata:
  name: mysql # RC 的名稱,全局唯一
spec:
  replicas: 1 # 副本期待數量
  selector: 
    app: mysql   # 符合目标的Pod擁有此标簽
  template:      # 根據此磨吧建立Pod的副本(執行個體)
    metadata:
      labels:
        app: mysql  # Pod 副本擁有的标簽,對應的RC的Selector
    spec:
      containers:     # Pod 内容器的定義部分
      - name: mysql   # 容器的名稱
        image: mysql  # 容器對應的Docker Image
        ports:
        - containerPort: 3306   # 容器應用監聽的端口号
        env:                    # 注入容器的環境變量
        - name: MYSQL_ROOT_PASSWORD   # 這裡第一次寫錯了 MySQL_ROOT_PASSWORD
          value: "root"           

複制

釋出RC檔案:

kubectl create -f mysql-rc.yaml           

複制

檢視建立的RC

kubectl get rc           

複制

檢視Pod的建立情況

kubectl get pods           

複制

建立失敗,檢視更多失敗資訊

kubectl describe pod example           

複制

kubectl get events           

複制

檢視日志,錯誤資訊

kubectl logs -p <pod name>           

複制

錯誤

➜  k8s kubectl logs -p mysql-lvq7v
error: database is uninitialized and password option is not specified
  You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD           

複制

這個是rc檔案mysql 密碼這裡寫的有問題,改掉就好了

  1. 建立一個service, 檔案名mysql-svc.yaml
apiVersion: v1
kind: Service         # 表明是Kubernetes Service 
metadata:
  name: mysql         # Service 的全局唯一名稱
spec:
  ports:
    - port: 3306      # Service 提供服務的端口号,這裡寫的時候寫成了  - port:3306 沒有用空格隔開
  selector:           # Service 對應的Pod 擁有這裡定義的标簽
    app: mysql           

複制

建立

kubectl create -f mysql-svc.yaml           

複制

檢視剛才建立的service

kubectl get svc           

複制

碰到一個錯誤, 是由于縮進引起的

error: error validating "mysql-svc.yaml": error validating data: ValidationError(Service.spec.ports[0]): invalid type for io.k8s.api.core.v1.ServicePort: got "string", expected "map"; if you choose to ignore these errors, turn validation off with --validate=false           

複制

根據 service的唯一名字,容器可以從環境變量中擷取到Service對應的Cluster IP 位址和端口,就可以發起TCP/IP連接配接請求了。

這樣就建立了一個mysql 的服務。