云计算之 docker 集群管理_ K8S_02 POD操作

# 二. 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 ##替换