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 密码这里写的有问题,改掉就好了
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 的服务。