# 二. k8s核心资源管理 # 1. PODS ## 1.1 创建第一个pod (主节点上操作) mkdir /opt/yml/test -p cd /opt/yml/test vim k8s_pod.yaml cat k8s_pod.yaml +++++++++++++++++++++++++++++++++++++++++++++++++++ apiVersion: v1 ##固定的,目前 就是V1 kind: Pod ##资源的类型,pod metadata: ##元数据,(属性之类的,名),K8S里的元数据,就是一个名,pod的资源名 name: nginx labels: ##别名,或者标签,标识在整个k8s里面的一个唯一性。 app: web spec: containers: - name: nginx image: 192.168.20.88:5000/dfsc/nginx:v1 ports: - containerPort: 80 ++++++++++++++++++++++++++++++++++++++++++++++++++kubectl create -f k8s_pod.yaml
## 1.2 查询 kubectl get pod
kubectl describe pods nginx ##查看pod的详细描述
从红帽官网pull这个镜像,需要有红帽 仓库 的帐号,才可以。 解决办法:通过 一些手段,先把这个镜像pull 到本地,再上传到服务器。 下载地址:http://106.12.88.74/softdown/k8s/pod-infrastructure-latest.tar.gz
给上传的镜像打标签
docker tag 34d3450d733b 192.168.20.88:5000/dfsc/pod-infrastructure:latest push 这个镜像到redisydocker push 192.168.20.88:5000/dfsc/pod-infrastructure:latest
######################################## 所有node节点修改kubelet vim /etc/kubernetes/kubelet
pod-infrastructure(pod基础架构): 在k8s 中,启pod,一共会启两个容器,一个是pod里面指定的资源容器,一个是pod本身的基础架构容器。 重启kubernet systemctl restart kubelet ##所有node节点 再到master 节点上,查看 刚才创建的nginx pod,会自动创建完成,并运行,因为,它能找到pod的基础镜像了。
也可以把刚才创建的pod ,删除,再重新创建。 ######################################## 主节点上操作: 删除刚才创建的pod kubectl delete pod nginx ##删除一个pod
然后,再全新 创建 pod cd /opt/yml/test
![]()
kubectl describe pod
![]()
kubectl get pods nginx ##单独看某个 pod 信息
kubectl get pod -o wide ##看pod的详细信息
kubectl get pods -o wide -l app=web ##按标签查看 pod 信息
## 报错分析++++++++++++++++++++++++++++ failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials on this request. details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file or directory)" +++++++++++++++++++++++++++++ registry.access.redhat.com/rhel7/pod-infrastructure:latest ++++++++++++++++++++++++++++ 解决: master: 上传准备好的容器为本地register (pod-infrastructure-latest.tar.gz) docker load -i pod-infrastructure-latest.tar.gz docker images docker tag docker.io/tianyebj/pod-infrastructure:latest 192.168.20.88:5000/dfsc/pod-infrastructure:latest docker images docker push 192.168.20.88:5000/dfsc/pod-infrastructure:latest node: (所有node节点) vim /etc/kubernetes/kubelet KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=192.168.20.88:5000/dfsc/pod-infrastructure:latest" systemctl restart kubelet.service ## 1.3 删除 kubectl delete pod nginx ## 1.4 更新 master: docker pull nginx
docker tag 8cf1bfb43ff5 192.168.20.88:5000/dfsc/nginx:v2 docker push 192.168.20.88:5000/dfsc/nginx:v2
修改 yaml文件,cd /opt/yml/test vim k8s_pod.yaml
cd /opt/yml/test ## 最好进入 到 yaml文件所在的目录下 kubectl replace --force -f k8s_pod.yaml
有一个问题就是,在删除原来的pod 时,会有业务在操作。 ## 1.5 小结 kubectl create -f 配置文件 ##创建一个pod kubectl get pods ## 查询有那些pod,简短信息。 kubectl get pods -o wide ##可以显示pod的IP,以及分布在那个节点上面。 kubectl get pods -o wide -l app=web ## 按标签 查看pod 信息 kubectl get pods -o wide --namespace=dfsc ##名称隔离,pod的名,隔离出来,有可能有重复的pod名称。 kubectl describe pods ##pod的描述信息 kubectl delete pod nginx ## 删除pod kubectl replace --force -f k8s_pod.yml ##替换