pod是k8s最小的资源单位,k8s通过创建pod资源,k8s把pod资源“随机”调度到某一个pod节点中,然后在pod里运行容器。
创建yaml 文件
k8s中通过yaml文件来创建pod,在master节点中,创建以下文件nginx_pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: csdn
labels:
app: web
spec:
containers:
- name: nginx
image: 192.168.1.5:5000/nginx:1.13
ports:
- containerPort: 80
- name: busybox
image: docker.io/busybox:latest
imagePullPolicy: IfNotPresent
command: ["sleep","3600"]
ports:
- containerPort: 80
创建私有仓库
在192.168.1.5中创建私有仓库,供各个node拉取镜像
docker pull docker.io/registry
docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry
用别的虚拟机上的docker下载镜像,并向私有仓库中推送
docker push 192.168.1.5:5000/pod-infrastructure:latest
docker push 192.168.1.5:5000/nginx:1.13
在三个node节点中配置/etc/sysconfig/docker 私有仓库地址, 重启三个docker
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --registry-mirror=https://registry.docker.cn.com --insecure-registry=192.168.1.5:5000'
在三个node节点中配置/etc/kubernetes/kubelet 私有仓库地址,重启kubelet服务
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=192.168.1.5:5000/pod-infrastructure:latest"
创建pod
1、先在master节点中查看k8s服务器和各node节点的状态,目前看master可以获取各个node节点。
kubectl get componentstatus
kubectl get nodes
2、查看各节点通信状态
nodes节点中容器通信验证 参考本文第四个小标题下的内容
3、以上两点都满足后,执行创建好的yaml文件
kubectl create -f nginx_pod.yaml
查看新建Pod的状态,可以看到本次k8s把这个名为csdn的pod资源随机调度到名为“master1”的node节点中
kubectl get pod -o wide
查看node节点中容器的运行情况,可以看到该node节点中的pod中定义的两个容器nginx和busybox,还有基础容器pod-infrastructure容器都在该节点中运行着。
题外篇一
查看建立好的私有仓库
docker exec -it 2886dbb16ef1 sh
镜像保存在/var/lib/registry/docker/registry/v2/repositories
题外篇二 网络IP
观察同一个node节点中的网络,以名为“master1”的node节点为例
执行ifconfig,发现由于做了通信协议,docker和flannel的ip地址是同一网段的,这也是集群能通信成功的必要条件。
此外,看一下本次在名为master1的节点中新建的pod资源,它的ip跟本节点的docker是同一个网段。
再看一下当前节点下所有容器的状态
目前有一个之前建好的私有仓库registry的容器,根据容器的ID查一下ip,跟本节点中的docker也是一个网段。
docker inspect 2886dbb16ef1|grep IP
再根据容器ID分别查一下pod资源中容器的ip,发现只有pod-infrastructure这个容器是有ip地址的,且与生成该容器的pod资源ip地址相同,另外两个容器与这个容器共享此ip。
docker inspect 9f633f75dc7c|grep IP
docker inspect f59077a14d8c|grep IP
docker inspect 85d1d997b360|grep IP