1.创建一个mysql服务,首先需要创建一个yaml的mysql文件:
mysql-rc.yaml文件内容对文件中的内容简单的解释:
a.yaml文件中的kind属性,用来表明此资源对象的类型,如上文件中表明是一个RC(副本控制器)
b.spec一节中是RC的相关属性的定义:
1)spec.selector是RC的Pod标签选择器,即监控和管理拥有这些标签的Pod实例,确保当前集群中始终有且仅有spec.replicas个Pod实例在运行
2)spec.replicas=1:表示只能运行一个mysql-Pod实例。如果集群中运行的Pod数量小于该值时,RC会根据spec.template一节中定义的Pod模板生成相应数量的Pod实例
3)在创建Pod实例的时候根据spec.template.metadata.labels指定该Pod的标签,需要注意的是这里的labels必须匹配之前的spec.selector,否则此RC每次创建了一个无法匹配的label的Pod,就会不停的创建这个Pod,会死循环中。
2.创建mysql-RC的实例:[root@localhost yaml]# kubectl create -f /root/yaml/mysql-rc.yaml
replicationcontroller "mysql" created
3.查看刚刚建立的RC
mysql-rc的创建
3.查看pod的创建情况:[root@localhost yaml]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mysql-blszl 0/1 ContainerCreating 0 2m
报错1:pod实例一直处于ContainerCreating状态
details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)"
报错的原因:
redhat-ca.crt -> /etc/rhsm/ca/redhat-uep.pem 由于/etc/rhsm/ca/redhat-uep.pem不存在造成的问题
解决的方法:
yum install *rhsm* -y
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout /etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem
此时软连接就不报错了
删除一开始创建的rc
kubectl delete -f /root/yaml/mysql-rc.yaml
再重现创建rc
kubectl create -f /root/yaml/mysql-rc.yaml
查看pod状态命令中参数的介绍:
查看pod命令回显
NMAE:pod的实例名,其中mysql-XXXXX是随机生成的
READY:表示正常的pod实例的个数
STATUS:Terminating 表示正在结束(用于删除一个pod实例之后的状态)
ContainerCreating 表示pod实例正在创建
Running 表示pod实例正在运行中
Pending 正在等待中
AGE: 表示pod实例正在运行中
4.查看mysql-pod实例详细信息: kubectl describe pod pod_name
查看node信息: kubectl describe node node_name
详情中会有Event事件:
记录事件的最早产生时间(FirstSeen),最后重现时间(LastSeen),重复次数(Count),发起者(From),类型(Type),以及导致事件的原因(ReasonMessage)。
当发现pod一直创建不成功的时候可以通过上述命令中的Event内容查找出现问题的原因。
5.创建一个与mysql-pod实例相关联的server服务(创建一个mysql-svc.yaml文件):
mysql-svc.yaml文件文件中内容解释:
yaml文件中的kind属性,用来表明此资源对象的类型,此处是Service。
yaml文件中metadata.name是Service的服务名(ServiceName)
yaml文件中spec.port属性定义Service的虚拟端口
yaml文件中spec.selector确定哪些pod实例对应到本服务上。
6.创建一个mysql服务和查看该服务:
创建和查看mysql-service服务
mysql服务被分配一个10.254.249.5的集群IP地址。这是一个虚地址,k8s集群中其他新创建的pod就可以通过Service的Cluster IP+端口号来连接和访问它。该ip地址是k8s在创建Service之后系统自动分配的,其他pod只要知道Service的唯一名称,容器可以从环境变量中获取到Service对应的ip和端口号,从而发起连接请求。
进入到mysql-docker中:
docker run -it mysql /bin/bash