kubernetes 权威指南学习笔记(1) -- mysql 小例子

时间:2022-06-26
本文章向大家介绍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 的服务。