前期准备工作
使用centos7虚拟机
- 关闭centos防火墙
systemctl stop firewalldsystemctl disable firewalld
- 安装etcd及kubernetes软件
yum update -yyum install etcd kubernetes -y
- 安装好的各软件版本如下
kubectl: v1.5.2docker: 1.13.1etcd: 3.2.15
- 修复配置文件
- docker配置文件/etc/sysconfig/docker
修改为OPTIONS=‘--selinux-enabled=false‘
- kubernetes apiserver配置文件 /etc/kubernetes/apiserver
KUBE_ADMISSION_CONTROL参数中删除ServiceAccount
- 使用daocloud加速器
注册daocloud用户后,运行daocloud加速器脚本
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://41379ba5.m.daocloud.io# 由于网络原因,最好使用加速器。# 如果使用daocloud后,出现镜像下载问题,可以考虑替换为阿里云加速器# 实际上就是编辑了/etc/docker/daemon.json文件# 如果docker镜像下载出现问题,优先考虑网络问题。
- 启动服务
systemctl start etcdsystemctl start docker systemctl start kube-apiserversystemctl start kube-controller-managersystemctl start kube-schedulersystemctl start kubeletsystemctl start kube-proxy
- 下载镜像
# mysql镜像docker pull daocloud.io/library/mysql:latest# tomcat镜像docker pull kubeguide/tomcat-app:v2[root@host1 docker]# docker imagesREPOSITORY ??????????????????????TAG ????????????????IMAGE ID ???????????CREATED ????????????SIZEdaocloud.io/library/mysql ???????latest ?????????????80bbf861367a ???????3 days ago ?????????445 MBdocker.io/kubeguide/tomcat-app ??v2 ?????????????????00beaa1d956d ???????21 months ago ??????358 MB
启用mysql容器服务
定义rc模板,命名为mysql-rc.yaml
apiVersion: v1kind: ReplicationControllermetadata: ?name: mysqlspec: ?replicas: 1 ?#定义RC标签选择 ?selector: ???app: mysql ?#定义Pod模板 ?template: ???metadata: ?????labels: ????????app: mysql ???spec: ?????#Pod内容器定义 ?????containers: ???????- name: mysql ?????????# image需要指定docker images输出中的那个mysql镜像 ?????????image: ?daocloud.io/library/mysql:latest ?????????ports: ??????????- containerPort: 3306 ?????????env: ?????????- name: MYSQL_ROOT_PASSWORD ???????????value: "123456"
注意image选择,是与书中不一致的,因为我们下载的mysql镜像是daocloud仓库中的镜像
创建好文件后,发布到kubernetes集群中
[root@host1 kube-test]# kubectl create -f mysql-rc.yamlreplicationcontroller "mysql" created[root@host1 kube-test]# kubectl get rcNAME ?????DESIRED ??CURRENT ??READY ????AGEmysql ????1 ????????1 ????????0 ????????10s[root@host1 kube-test]# kubectl get podsNAME ?????????READY ????STATUS ?????????????RESTARTS ??AGEmysql-nrcvt ??0/1 ??????ContainerCreating ??0 ?????????27s
这个ContainerCreating状态是异常状态,会一直持续,不会进入到running状态
查看pods状态时,
kubectl describe pods mysql-nrcvt............ ?1m ???5s ?5 ??{kubelet 127.0.0.1} ????Warning FailedSync ?Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"registry.access.redhat.com/rhel7/pod-infrastructure:latest\""
发现是无法下载这个镜像,于是我手动pull这个镜像,发现如下报错:
[root@host1 kube-test]# docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latestTrying to pull repository registry.access.redhat.com/rhel7/pod-infrastructure ... open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory
搜索这个报错,发现可以通过yum install rhsm -y解决
运行该命令后,删除掉之前部署的rc,
[root@host1 kube-test]# kubectl delete rc mysqlreplicationcontroller "mysql" deleted[root@host1 kube-test]# kubectl get podsNo resources found.
重新部署
[root@host1 kube-test]# kubectl create -f mysql-rc.yamlreplicationcontroller "mysql" created[root@host1 kube-test]# kubectl get rcNAME ?????DESIRED ??CURRENT ??READY ????AGEmysql ????1 ????????1 ????????1 ????????7s[root@host1 kube-test]# kubectl get pods NAME ?????????READY ????STATUS ???RESTARTS ??AGEmysql-nbwvp ??1/1 ??????Running ??0 ?????????13s
mysql正常运行了。
查看正在运行的docker,发现有两个
[root@host1 kube-test]# docker ps CONTAINER ID ???????IMAGE ???????????????????????????????????????????????????????COMMAND ?????????????????CREATED ?????????????STATUS ?????????????PORTS ??????????????NAMESf58905ddee64 ???????daocloud.io/library/mysql:latest ????????????????????????????"docker-entrypoint..." ??About a minute ago ??Up About a minute ??????????????????????k8s_mysql.9ef925be_mysql-nbwvp_default_30da097b-4ee8-11e8-a311-000c29f71e04_7ac92ba799382a3dcbf0 ???????registry.access.redhat.com/rhel7/pod-infrastructure:latest ??"/usr/bin/pod" ??????????About a minute ago ??Up About a minute ??????????????????????k8s_POD.1d520ba5_mysql-nbwvp_default_30da097b-4ee8-11e8-a311-000c29f71e04_aad8e14a
记录《kubernetes权威指南》中单机应用栈例子(1)
原文地址:http://blog.51cto.com/duf0913/2112491