k8s创建服务步骤
1、定义服务的RC文件(RepliactionController)
2、将定义好的RC文件发布到k8s集群中
3、创建一个当前服务于kubernetes service关联的SVC文件
4、将定义好的SVC文件发布到k8s集群中
详细创建步骤与解析
1、创建tomcat对应的RC文件,我们将该文件命名为tomcat-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: tomcat
spec:
replicas:
selector:
app: tomcat
template:
metadata:
labels:
app: tomcat
spec:
containers:
- name: tomcat
image: tomcat
ports:
- containerPort: 8080
2、将上面创建好的RC文件发布到k8s集群中,发布的命令如下
kubectl create -f tomcat-rc.yaml
发布完成后通过下面的命令来查看RC的状态信息
kubectl get rc
如果输出结果如下所示,则表示创建成功
NAME DESIRED CURRENT READY AGE
tomcat 1 1 1 1d
如果输出结果如下所示,则表示创建失败
NAME DESIRED CURRENT READY AGE
tomcat 1 0 0 1d
出现该创建失败的情况解决方案是:
编辑 /etc/kubernetes/apiserver 配置文件中 KUBE_ADMISSION_CONTROL 配置项,删除 SecurityContextDeny,ServiceAccount 这两个配置参数,然后保存配置文件
重启kube-apiserver
systemctl restart kube-apiserver
- 删除已创建RC
kubectl delete -f tomcat-rc.yaml
- 重新创建RC
kubectl create -f tomcat-rc.yaml
如果输出结果如下所示,而且一直都保持这样状态的话,则说明RC创建完成,但是创建Pod的过程异常
NAME DESIRED CURRENT READY AGE
tomcat 1 1 0/1 1d
出现该情况的话通过下面的命令来查看Pod的启动情况
kubectl get pods
如果输出的结果如下所示,则进一步表名是Pod创建过程异常造成的
NAME READY STATUS RESTARTS AGE
tomcat-asdfg 0/1 ContainerCreating 0 3s
出现该问题的处理方法如下所示:
- 通过如下命令查看Pod启动的详细情况和异常情况
kubectl describe pod tomcat-asdfg
如果异常提示是由于缺失 /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt 文件造成的 registry.access.redhat.com/rhel7/pod-infrastructure:latest 镜像无法拉取到的话,只需要如下的处理
通过yum命令安装缺失文件依赖的服务python-rhsm-certificates,安装命令如下:
yum install -y *rhsm*
- 通过docker命令手动拉取registry.access.redhat.com/rhel7/pod-infrastructure:latest 镜像,命令如下
docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest
- 当镜像下载完成,Pod会自动进入Running状态
3、创建对应的Service服务,启对应的yaml文件命名为tomcat-svc.yaml,具体第一如下所示:
apiVersion: v1
kind: Service
metadata:
name: tomcat
spec:
type: NodePort
ports:
- port: 8080
nodePort:10000
selector:
app: tomcat
4、将定义好的SVC文件发布到k8s集群中去,发布命令如下:
kubectl create -f tomcat-svc.yaml
5、查看SVC文件启动情况的命令如下:
kubectl describe svc tomcat
输入出结果如下:
Name: tomcat
Namespace: default
Labels: <none>
Selector: app=tomcat
Type: NodePort
IP: 10.252.5.157
Port: <unset> 8080/TCP
NodePort: <unset> 30001/TCP
Endpoints: 182.18.0.1:8080
Session Affinity: None
No events.
由于我们通过tomcat默认的页面来进行试验结果的验证,所以我们这里只能用8080端口作为内部服务的端口,因为tomcat默认的配置文件就是8080端口的,接下来,我们再虚拟机内网环境中就可以通过上面输出的ip:8080来查看tomcat欢迎页面啦
curl 'http://10.252.5.157:8080'
如果我们要在外网环境中访问该tomcat欢迎页面的话,首先需要你的本地虚拟机有外网IP,然后通过外网IP:30001即可进行访问
http://59.11.224.10:30001
结语
到目前为止,我们的第一个k8s应用就顺利启动啦,这已经迈出了学习k8s的第一步,在您实操的过程中如果有什么异常,可以在下面给留言,我们可以一起探讨学习
0条评论