准備工作
首先准備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所已會有點慢