kuberbetes部署tomcat

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端口,此时部署完成

原文地址:https://www.cnblogs.com/Zrecret/p/14139373.html