美文网首页
kubernetes-pod资源

kubernetes-pod资源

作者: 早_wsm | 来源:发表于2020-04-05 15:44 被阅读0次

kubernetes是docker集群的编排工具

kubernetes的核心功能:

  • 自愈: 重新启动失败的容器,在节点不可用时,替换和重新调度节点上的容器,对用户定义的健康检查不响应的容器会被中止,并且在容器准备好服务之前不会把其向客户端广播。
  • 弹性伸缩: 通过监控容器的cpu的负载值,如果这个平均高于80%,增加容器的数量,如果这个平均低于10%,减少容器的数量
  • 服务的自动发现和负载均衡:不需要修改您的应用程序来使用不熟悉的服务发现机制,Kubernetes 为容器提供了自己的 IP 地址和一组容器的单个 DNS 名称,并可以在它们之间进行负载均衡。
  • 滚动升级和一键回滚: Kubernetes 逐渐部署对应用程序或其配置的更改,同时监视应用程序运行状况,以确保它不会同时终止所有实例。 如果出现问题,Kubernetes会为您恢复更改,利用日益增长的部署解决方案的生态系统。

kubernetes的应用场景

微服务架构中使用
微服务的优点:

能承载更高的并发
业务健壮性,高可用
修改代码,重新编译时间短
持续集成,持续发布
jenkins代码自动上线

kubernetes常用的资源R

pod Replicationcontroller

pod 是k8s最小的资源单位

  • 创建pod资源

在k8s内各种资源的创建都需要一个yaml文件
先创建存放pod 的yaml文件的目录mkdir -p k8s/pod

k8s_pod.yaml
#文件内容与格式主要有四部分

apiVersion: v1  ##api版本
kind: Pod   ##资源类型
metadata:    ##属性
  name: nginx
  labels:
    app: web
spec:      ##详细
  containers:
    - name: nginx
      image: 10.0.0.11:5000/nginx:1.13
      ports:
        - containerPort: 80

导入一个nginx的镜像

下载地址:
链接:https://pan.baidu.com/s/1yhDRLnfs5qLsTHYhnFtCiQ
提取码:7vs7

导入、打好标签并上传到私有仓库内

docker load -i docker_nginx.tar.gz
docker images
docker tag nginx:latest 10.0.0.11:5000/nginx:latest
docker push 10.0.0.11:5000/nginx:latest 

写入一个nginx的yaml文件

apiVersion: v1  
kind: Pod  
metadata:   
  name: nginx
  labels:
    app: web
spec:     
  containers:
    - name: nginx
      image: 10.0.0.11:5000/nginx:1.13
      ports:
        - containerPort: 80

使用命令kubectl create -f k8s_pod.yaml即可创建pod

[root@master pod]# kubectl create -f k8s_pod.yaml
pod "nginx" created
#查看
[root@master pod]# kubectl get pods
NAME      READY     STATUS              RESTARTS   AGE
nginx     0/1       ContainerCreating   0          40s

使用describe查看pod详细信息,可以根据信息解决报错!

[root@master pod]# kubectl describe pod nginx
Name:       nginx
Namespace:  default
Node:       10.0.0.13/10.0.0.13
Start Time: Sun, 05 Apr 2020 14:48:06 +0800
Labels:     app=web
Status:     Pending
IP:     
Controllers:    <none>
Containers:
  nginx:
    Container ID:       
    Image:          10.0.0.11:5000/nginx:latest
    Image ID:           
    Port:           80/TCP
    State:          Waiting
      Reason:           ContainerCreating
    Ready:          False
    Restart Count:      0
    Volume Mounts:      <none>
    Environment Variables:  <none>
Conditions:
  Type      Status
  Initialized   True 
  Ready     False 
  PodScheduled  True 
No volumes.
QoS Class:  BestEffort
Tolerations:    <none>
Events:
  FirstSeen LastSeen    Count   From            SubObjectPath   Type        Reason      Message
  --------- --------    -----   ----            -------------   --------    ------      -------
  2m        2m      1   {default-scheduler }            Normal      Scheduled   Successfully assigned nginx to 10.0.0.13
  2m        1m      4   {kubelet 10.0.0.13}         Warning     FailedSync  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)"

  2m    6s  9   {kubelet 10.0.0.13}     Warning FailedSync  Error syncing pod, skipping: failed to "StartContainer" for "POD" with ImagePullBackOff: "Back-off pulling image \"registry.access.redhat.com/rhel7/pod-infrastructure:latest\""

根据报错信息: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)"提示说明nfrastructure:latest这个镜像死活pull不下来,可以看到他是从 registry.access.redhat.com/rhel7红帽镜像仓库里pull的,既然这个仓库pull不下来,我们可以手动从别的仓库pull下来直接使用,你可以使用在线pull的方法,也可以使用我提供的压缩包直接下载导入
下载地址:链接:https://pan.baidu.com/s/1_clxtHHK3o8w30xrSpg1Sg
提取码:ztnd

导入,打标签推送到仓库

docker load -i pod-infrastructure-latest.tar.gz
docker images
docker tag docker.io/tianyebj/pod-infrastructure:latest 10.0.0.11:5000/pod-infrastructure:latest
docker push 10.0.0.11:5000/pod-infrastructure:latest

既然这个镜像已经有了,为了node节点能正常从仓库获取此资源就需要修改kubelet的配置文件,指定正确的位置

所有节点都需要操作
vim /etc/kubenetes/kubelet

17 KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=10.0.0.11:5000/pod-infrastructure:latest"

改完后重启服务systemctl restart kubelet

最后再来查看master节点pod运行情况:

使用-o wide可以查看更多详细信息
[root@master pod]# kubectl get pods -o wide
NAME      READY     STATUS             RESTARTS   AGE       IP            NODE
nginx     1/1       Running   0          43m       172.16.43.2   10.0.0.12

显示已经运行起来了
最后可以在被调动的node 节点上查看已启动的容器


image.png

尝试访问一下服务:

[root@master pod]# curl -I 172.16.43.2
HTTP/1.1 200 OK
Server: nginx/1.13.6
Date: Sun, 05 Apr 2020 07:35:12 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Thu, 14 Sep 2017 16:35:09 GMT
Connection: keep-alive
ETag: "59baafbd-264"
Accept-Ranges: bytes

pod资源至少有俩个容器组成:
pod基础容器
pod业务容器
最多可能有5个容器:
一个基础容器,四个业务容器,总之容器数是奇数向的

相关文章

网友评论

      本文标题:kubernetes-pod资源

      本文链接:https://www.haomeiwen.com/subject/xdjephtx.html