k8s学习之路一步一大坑,艰难的提高自己技能之路!!!
1、准备三台服务器
10.0.0.11 master
10.0.0.12 node1
10.0.0.13 node2
2、三台机器都需要安装docker,并关闭防火墙
docker安装yum -y install docker
关闭防火墙 systemctl stop firewalld setenforce 0
3、在三台服务器的/usr/local/下创建/dev/k8s目录
4、查看node结点是否连接正常
[root@localhost ~]# kubectl get nodes NAME STATUS AGE 10.0.0.12 Ready 14s 10.0.0.13 Ready 12s
5、创建部署资源编排文件
[root@localhost k8s]# vim tomcat01.yaml --- apiVersion: extensions/v1beta1 kind: Deployment #表示这是Deployment调度配置 metadata: name: myweb #调度对象的全称,全局唯一 spec: replicas: 2 #表示创建2个pod副本数量 template: #根据此模板创建pod实例 metadata: labels: app: myweb #pod拥有的标签。对应RC的selector 这里的RC表示(副本控制器) spec: containers: - image: docker.io/tomcat #从docker拉取的tomcat镜像名称 name: myweb ports: - containerPort: 8080 #tomcat容器的端口 --- apiVersion: v1 kind: Service #表示这是service服务配置 metadata: name: myweb spec: ports: - nodePort: 31111 #浏览器访问此服务的端口 port: 8081 targetPort: 8080 selector: app: myweb type: NodePort #表示这个服务是一个node节点的端口
这里是我编排好的文件,第一次写好后创建就出现了第一个大坑
6、创建命令
kubectl create -f tomcat01.yaml #如果配置错了,创建了一个错误的service和pod,可以用删除命令,配置正确后再重新创建一遍 kubectl delete -f tomcat01.yaml
这里我将我的报错放出来,避免大家入坑
[root@localhost k8s]# kubectl create -f tomcat01.yaml Error from server (AlreadyExists): error when creating "tomcat01.yaml": deployments.extensions "myweb" already exists yaml: line 6: did not find expected key [root@localhost k8s]# kubectl create -f tomcat01.yaml error: error validating "tomcat01.yaml": error validating data: found invalid field spec for v1.ObjectMeta; if you choose to ignore these errors, turn validation off with --validate=false [root@localhost k8s]# kubectl create -f tomcat01.yaml error: yaml: line 10: did not find expected key [root@localhost k8s]# kubectl create -f tomcat01.yaml error: yaml: line 13: did not find expected '-' indicator
这里的错误都是在说编排文件的格式错误,在这里我放一个连接,自动编排排错yaml文件工具连接,http://www.yamllint.com/
创建成功
[root@localhost k8s]# kubectl create -f tomcat01.yaml deployment "myweb" created service "myweb" created
7、查看pods是否创建成功且运行成功
[root@localhost k8s]# kubectl get pods NAME READY STATUS RESTARTS AGE myweb-209501739-2cjlz 0/1 ContainerCreating 0 8s myweb-209501739-qx9qq 0/1 ContainerCreating 0 8s
如果此时你的status和我的状态是一样的(正常的status状态是running的),那么恭喜你 又出现了第二个大坑了,哈哈!!!!
查看两个pods的日志
第一个节点
第二个节点
查看了日志发现都是一个问题,都是少了一个文件,错误的意思是说在pul镜像image的时候没有凭据,没有redhat-ca.crt文件
于是我查了很多博客,终于把问题解决了
问题就是我的node节点机上没有redhat-ca.crt文件,此文件应该是用来连接主机master作凭证, 在node节点机10.0.0.12上和10.0.0.13节点,执行如下命令: 1、wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm 2、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 3、docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
此时查看状态
[root@localhost ~]# kubectl get pods NAME READY STATUS RESTARTS AGE myweb-209501739-7c489 1/1 Running 0 1d myweb-209501739-911kr 1/1 Running 0 1d
[root@localhost ~]# kubectl get svc NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes 10.254.0.1 <none> 443/TCP 1d myweb 10.254.182.54 <nodes> 8081:31111/TCP 1d
这样的状态表示成功!
打开游览器访问node节点的31111端口,此时部署完成