k8s入门系列之pod基础篇 – 21运维
通知: .-...

k8s入门系列之pod基础篇

K8S 21运维 993浏览

pod运行于Node节点上,若干相关容器的组合。Pod内包含的容器运行在同一宿主机上,使用相同的网络命名空间、IP地址和端口,能够通过localhost进行通。Pod是Kurbernetes进行创建、调度和管理的最小单位,它提供了比容器更高层次的抽象,使得部署和管理更加灵活。一个Pod可以包含一个容器或者多个相关容器。
基于上篇文章《k8s入门系列之集群yum安装篇》的架构,从本文开始进行pod、rc、svc等实际操作以及平时的一些管理,以及记录一些大家都会遇到的坑和解决办法。

1,创建pod。
这里用nginx容器来实验,使用K8S集群创建一个nginx容器,创建的时候可以使用命令行或者yml文件创建,建议都编写yml文件创建(实际生产环境基本都是基于yml来管理)

[[email protected] yaml]# cat  ng-pod.yml 
---
apiVersion: v1
kind: Pod
metadata:
   name: swh-ng
spec:
  containers:
  - name: swh-ng   #pod名称
    image: nginx    #镜像名
    ports:
    - containerPort: 80  #容器监听端口号
      hostPort: 80       #node监听端口号,对外暴露并提供服务

根据上述ng-pod.yml创建pod:

kubectl create -f ng-pod.yml  #创建成功会提示:pod "swh-ng" created

创建后查看pod状态,会发现一直显示ContainerCreating 状态:

[[email protected] yaml]# kubectl get pod
NAME          READY     STATUS              RESTARTS   AGE
swh-ng         0/1       ContainerCreating   0          6s

查看日志:

[[email protected] yaml]# kubectl describe pod  swh-ng
 Error syncing pod, skipping: 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)"

基础镜像不存在,软链接指向文件不存在导致无法拉去基础镜像。
解决办法:
(1) 方法一:yum install *rhsm* -y (可以尝试,网上的解决办法。注意看提示,包建议remove一次后重装,要不然解决不了问题)
(2)方法二:下载rpm包并安装:

wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem 
docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest

(3)更改基础镜像。更改基础镜像的请求调用地址或镜像种类。
重新创建pod ,可以考虑删除原来pod后重新基于swh-ng.yml重建pod:

[[email protected] yaml]# kubectl get pod  swh-ng  -o wide
NAME      READY     STATUS    RESTARTS   AGE       IP           NODE
swh-ng    1/1       Running   4          20m       172.40.3.4   10.1.14.16

2,验证pod
查看该pod位于node2节点,直接浏览器测试访问node ip地址 10.1.14.16,如果可以看到nginx的欢迎界面,则说明pod创建成功。
也可以从集群中任意一个服务器curl 该node ip地址测试

参考文章:
pod创建:https://www.cnyunwei.cc/archives/1540
基础镜像无法拉取解决办法:https://blog.csdn.net/qq_38695182/article/details/82971114

转载请注明:21运维 » k8s入门系列之pod基础篇