准备工作
首先准备Kubernets的安装,这里我使用的是virtualbox上安装centos7,
Kubernetes v1.5.2 Docker version 1.12.6
安装
yum install docker etcd kubernetes -y
修改配置文件
vim /etc/kubernetes/apiserver
KUBE_ADMISSION_CONTROL改为下面的值
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRange
不然后期创建rc与pod的时候会出现pod无法创建但是rc能创建
镜像加速器 参考阿里
安装/升级你的Docker客户端
推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce
如何配置镜像加速器
针对Docker客户端版本大于1.10.0的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["***.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
启动服务
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
创建mysql 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,最终陷入循环。
执行创建 mysql 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
需要注意的是在拉取镜像的时候因为GWF所已会有点慢
创建相关联的mysql service
准备工作
准备好k8s一中的rc与pods
定义services文件
vim mysql-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
spec:
ports:
- port: 3306
selector:
app: mysql
创建mysql service
kubectl create -f mysql-svc.yaml
查看svc
kubectl get svc
创建myweb rc
创建rc文件,语法为yaml格式,
vim myweb-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: myweb
spec:
replicas: 2
selector:
app: myweb
template:
metadata:
labels:
app: myweb
spec:
containers:
- name: myweb
image: kubeguide/tomcat-app:v1
ports:
- containerPort: 8080
执行创建 myweb Rc
kubectl create -f myweb-rc.yaml
查看kubectl get rc
kubectl get pods
查看kubectl get rc
kubectl get pods
创建相关联的myweb service
准备工作
准备好k8s一中的rc与pods
定义services文件
vim myweb-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: myweb
spec:
type: NodePort
ports:
- port: 8080
nodePort: 30001
selector:
app: myweb
创建myweb service
kubectl create -f myweb-svc.yaml
查看svc
kubectl get svc
安装成功
察看pod状态
访问web页面
调节web容器的数量
察看所有rc kubectl get rc
调节myweb的数量 kubectl scale rc myweb --replicas=5
察看结果 kubectl get pod -o wide
如果, myweb的数量从2变成了5