准备工作
首先准备Kubernets的安装,这里我使用的是centos7
Kubernetes v1.5.2
Docker version 1.12.6, build 85d7426/1.12.6
安装
yum install docker etcd kubernetes -y
修改配置文件
vim /etc/kubernetes/apiserver
将KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRange
r,SecurityContextDeny,ServiceAccount,ResourceQuota"中的ServiceAccount
不然后期创建rc与pod的时候会出现pod无法创建但是rc能创建
启动服务
systemctl start etcd
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy
systemctl start docker
创建rc
创建rc文件,语法为yaml格式,vim mysql-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: mysql
spec:
replicas: 1
selector:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
yaml定义文件中kind属性,用来表明此资源对象的类型,比如这里的值为“ReplicationController”表示这是一个RC;
spec一节中是RC的相关属性定义,比如spec.selecror是RC的Pod标签选择器,即监控和管理拥有这些标签的pod实,
确保当前集群上始终有且仅有replicas个pod实例在运行,这里我们设置为1表示只能运行一个mysql pod实例。当集群
中运行的Pod的数量小于replicas时,RC会根据spec.template.metadata.labels指定了该Pod标签,需要特别注意的是:
这里的labels必须匹配之前的spec.selector,否则此RC每次创建了一个无法匹配label的pod,就会不停的尝试新的pod,
最终陷入循环。
执行Rc
kubectl create -f mysql-rc.yaml
查看kubectl get rc
kubectl get pods
错误整理
在创建rc与pod时出现迟迟无发运行pods状态如下:
可以使用kubectl describe pods Pod_Name
来查看是什么原因。
其中我遇到错误为:
需要安装rhsmyum install *rhsm*
删除rc与pod kubectl delete -f XXX.yaml
或者kubectl delete pods pod_name
详细使用方法查看 kubectl delete --help
之后便可已正常运行。
需要注意的是在拉取镜像的时候因为GWF所已会有点慢