1 安装一个nginx服务试试
1、因为我使用的是集群的default这个默认命名空间,所以先执行如下命令查看当前集群里面的所有资源:
kubectl get all -n default -o wide
发现这里已经有了一个service的资源,这个资源是干嘛的?
执行如下命令:
kubectl describe service kubernetes
发现是代理到了163的6443端口,而6443端口发现是kube-apiserver这个服务的端口。猜测启动这个服务的目的是为了让其他资源能通过dns的方式直接去请求到kube-apiserver。嗯~ 应该是的,因为我们这里是单master的集群,所以endpoints只有一个,而如果有多个master节点的话,就会有多个了。至于通过dns的方式直接访问,我记得是这种格式:my-svc.my-namespace.svc.cluster.local 所以这个服务的dns应该是 kubernetes.default.svc.cluster.local。待会验证一下
2、使用如下命令搭建一个nginx服务
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
执行完成后,再执行如下命令查看一下kubectl get all -n default -o wide
发现增加了四个资源,分别是一个pod,一个service,一个deployment还有一个replicaset。具体后续再看
此时通过192.168.1.163:31220就能访问到这个服务了
使用如下命令进入到这个pod里面去:
kubectl exec -it nginx-6799fc88d8-gq2n9 /bin/bash
执行cat /etc/nginx/nginx.conf查看nginx的配置文件,就能看到具体的内容了
为了验证上面说的那个域名,在nginx容器里面安装ping工具:
apt update
apt install inetutils-ping
安装完成后执行如下命令:
ping kubernetes.default.svc.cluster.local
果然,这个ip地址就是那个kubernets所在的集群内网ip地址,所以说这个dns规则是正确的。
、