如果是kubeadm创建出来的k8s,创建pod的时候不会把pod创建到master节点上。 而如果是二进制安装的出来的,pod会被创建到任意节点上。 因为,kubeadm创建出来的会把master节点设置了污点功能; 因为会被调度到计算节点上,所以节点上要有对应的镜像。 在工作节点导入镜像; 创建一个pod: 由于没有指定命名空间,会被分配到default的命名空间;而查询pod不指定命名空间就会查询到该命名空间; 查询指定容器的详细信息; 尝试访问这个分配的IP地址: 在其他节点尝试访问: 模拟互联网上的客户端进行访问: 显示访问不到:例如在公网上访问了一个私有地址; 查看pod的日志: 注意:在k8s中有一个最常用的排错工具: 登录pod: 如果不指定pod中的容器,会默认登录到pod的第一个容器中; 在线编辑pod中容器的编排文件: 可以输入set nu显示行号; 为pod中的容器映射端口: 这种方法只是临时性的; 在这期间用其他节点尝试访问: 从pod内拷贝文件到主机上; 如何把主机上的某个文件拷贝到pod中的某个容器: 删除pod: 先指定对象的类型,再指定对象的名称; 再创建一个pod并指定标签和镜像拉取策略: 再创建一个进行对比: 策略设置为Always总是拉取; 查看该pod的描述信息; 写一个编排文件: 后缀名要为.yaml或.yml 注意yaml文件的语法格式; 应用编排文件生成pod: 删除pod: 拉取一个本地写好的资源清单; 即:编排文件; 里面还采用了探针检测: 以另外一种方式执行该资源清单: 可以看出该pod中有两个容器; 再拉取一个关于php的文件; 查看分配的IP;尝试访问; 暴露端口/创建svc(service) 可以看出给到一个集群的地址;加上暴露出来的端口就可以访问了; 但是仍然不能被外部用户访问; 再上翻命令; 加上--type=NodePort的选项 会给到一个端口的映射; 这样就可以用外部的客户端进行访问了; 同时还可以用其他节点的IP进行访问: 大概解释: 外部访问:访问节点的IP加映射的30971; 内部访问:用8080; 直接访问pod的话用80端口; 可以把service当成一个负载均衡器,为pod做负载均衡; service为用户屏蔽了后端pod的存在,为一个pod或为众多pod构建了一个集群地址。 冒号前8080是集群的端口,而冒号后是给主机的;即:101,102,103的; Pod的阶段: pending running succeeded failed unknown 资源对象的属性写到一起就叫做清单; 将写好的清单拷贝到k8s下面的清单目录; 拷贝到该目录会自动创建出来; 这个目录有什么功能??? 希望清单中的对象能够开机自启;就可以放入到该目录中; 里面还有其他文件,查看即可,不要修改; 但是处于该目录中的清单文件,想删除对象(pod或其他对象时)删除文件即可; 只删除对象是删除不掉的; 首先会进入pending状态,然后又会自动running;