k8s常用资源管理 控制

news2024/12/24 10:01:28

目录

Pod(容器组):Pod是Kubernetes中最小的部署单元,可以包含一个或多个容器。Pod提供了一种逻辑上的封装,使得容器可以一起共享网络和存储资源

1、创建一个pod

2、pod管理

pod操作

目录

创建Pod会很慢

Pod(容器组):Pod是Kubernetes中最小的部署单元,可以包含一个或多个容器。Pod提供了一种逻辑上的封装,使得容器可以一起共享网络和存储资源

1、创建一个pod

2、pod管理

pod操作

使用 Kubectl 工具容器资源Kubectl 是管理Kubernetes集群的命令行工具,通过生成的 json 格式传递给 API Server 进行创建、查看、管理的操作。使用 kubectl --help 命令可以查看 Kubectl 帮助命令,其中包括基本命令、部署命令、群集管理命令、调试命令以及高级命令等。

创建Podkubectl run 命令可以创建并运行一个或多个Pod,也可以创建一个 deployment 或job 来管理Pod。此命令和 docker run 相类似,也是实现Pod的创建,先从仓库中拉取基础镜像,然后对容器进行操作。

发布服务容器资源创建完成,就需要完成发布工作,确保 Pod 能够对外提供服务,保证客户端能够正常访问,使用 kubectl expose 命令可以实现该目的。



创建Pod会很慢

Pod(容器组):Pod是Kubernetes中最小的部署单元,可以包含一个或多个容器。Pod提供了一种逻辑上的封装,使得容器可以一起共享网络和存储资源

1、创建一个pod

1)创建yuml文件

[root@k8s-master ~]# mkdir k8s

[root@k8s-master ~]# vim ./k8s/nginx.yaml

piVersion: v1

kind: Pod

metadata:

  name: nginx

  labels:

    app: web

spec:

  containers:

    - name: nginx

      image: nginx:1.13

      ports:

        - containerPort: 80

2)创建容器

方法一.  yum安装

[root@k8s-master ~]#yum install *rhsm*

方法二

执行命令:

[root@k8s-master ~]#wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm

[root@k8s-master ~]# yum -y install *rhsm*

 [root@k8s-master ~]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm

[root@k8s-master ~]# 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  

前两个命令会生成/etc/rhsm/ca/redhat-uep.pem文件.  

[root@k8s-master ~]# docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest

Trying to pull repository registry.access.redhat.com/rhel7/pod-infrastructure ...

latest: Pulling from registry.access.redhat.com/rhel7/pod-infrastructure

26e5ed6899db: Downloading 34.95 MB/74.87 MB

66dbe984a319: Download complete

9138e7863e08: Download complete

创建pod

[root@k8s-master ~]# kubectl create -f ./k8s/nginx.yaml

pod "nginx" created

3)查看所有pod创建运行状态

[root@k8s-master ~]# kubectl get pod

NAME      READY     STATUS              RESTARTS   AGE

nginx     0/1       ContainerCreating   0          17s

4)查看指定pod资源

[root@k8s-master ~]# kubectl get pod nginx

NAME      READY     STATUS              RESTARTS   AGE

nginx     0/1       ContainerCreating   0          41s

5)查看pod运行的详细信息

[root@k8s-master ~]# kubectl describe pod nginx

Name: nginx

Namespace: default

Node: k8s-node2/192.168.50.51

Start Time: Thu, 10 Aug 2023 20:33:09 +0800

Labels: app=web

Status: Pending

IP:

Controllers: <none>

Containers:

  nginx:

    Container ID:

    Image: nginx:1.13

    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 ReasonMessage

  --------- -------- ----- ---- ------------- -------- -------------

  1m 1m 1 {default-scheduler } Normal Scheduled Successfully assigned nginx to k8s-node2

  25s 25s 1 {kubelet k8s-node2} 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\""

  1m 4s 3 {kubelet k8s-node2} 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)"

显示调度节点 验证运行的pod

[root@k8s-master ~]# kubectl get pod nginx -o wide

NAME      READY     STATUS              RESTARTS   AGE       IP        NODE

nginx     0/1       ContainerCreating   0          2m        <none>    k8s-node2

2、pod管理

1)删除pod

[root@k8s-master ~]# kubectl delete pod nginx

pod "nginx" deleted

2)查看删除pod无法找到

[root@k8s-master ~]# kubectl get pod nginx -o wide

Error from server (NotFound): pods "nginx" not found

3)创建pod

[root@k8s-master ~]# kubectl create -f ./k8s/nginx.yaml

pod "nginx" created

4)发现最先创建的pod运行在k8s-master节点上,下载镜像速度太慢没法运行

[root@k8s-master ~]# kubectl get pod nginx -o wide

NAME      READY     STATUS              RESTARTS   AGE       IP        NODE

nginx     0/1       ContainerCreating   0          38s       <none>    k8s-master

5)访问pod节点中的服务

[root@k8s-master ~]# kubectl get pod nginx -o wide
NAME      READY     STATUS    RESTARTS   AGE       IP            NODE
nginx     1/1       Running   0          21m       172.16.48.2   k8s-master


[root@k8s-master ~]# curl -l http://172.16.48.2
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

pod操作

1)在一个pod中修改配置文件运行多个业务容器

[root@k8s-master ~]# vim ./k8s/nginx.yaml

apiVersion: v1
kind: Pod
metadata:
  name: test3
  labels:
    app: web
spec:
  containers:
    - name: nginx02
      image: nginx:1.13
      ports:
        - containerPort: 80
    - name: busybox
      image: docker.io/busybox:latest
      command: ["sleep","3600"]
      ports:
        - containerPort: 80
~                            

 2)创建资源

[root@k8s-master ~]#  kubectl create -f ./k8s/nginx.yaml

3)查看资源使用情况    Pod会 分配了各自的 IP    过程会有点慢正常现象

[root@k8s-master ~]#  kubectl get pod -o wide
NAME      READY     STATUS              RESTARTS   AGE       IP            NODE
nginx     1/1       Running             0          25m       172.16.48.2   k8s-master
test1     0/2       ContainerCreating   0          9m        <none>        k8s-node2
test2     2/2       Running             0          5m        172.16.48.3   k8s-master
test3     0/2       ContainerCreating   0          4m        <none>        k8s-node2

使用 Kubectl 工具容器资源
Kubectl 是管理Kubernetes集群的命令行工具,通过生成的 json 格式传递给 API Server 进行创建、查看、管理的操作。
使用 kubectl --help 命令可以查看 Kubectl 帮助命令,其中包括基本命令、部署命令、群集管理命令、调试命令以及高级命令等。

[root@k8s-master ~]# kubectl --help
kubectl controls the Kubernetes cluster manager.

 Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/

Basic Commands (Beginner):
  create        Create a resource from a file or from stdin.
  expose        使用 replication controller, service, deployment 或者 pod
并暴露它作为一个 新的 Kubernetes Service
  run           在集群中运行一个指定的镜像
  set           为 objects 设置一个指定的特征

Basic Commands (Intermediate):
  explain       查看资源的文档
  get           显示一个或更多 resources
  edit          在服务器上编辑一个资源
  delete        Delete resources by filenames, stdin, resources and names, or by resources and label
selector

Deploy Commands:
  rollout       Manage the rollout of a resource
  scale         Set a new size for a Deployment, ReplicaSet or Replication Controller
  autoscale     自动调整一个 Deployment, ReplicaSet, 或者 ReplicationController
的副本数量


创建Pod
kubectl run 命令可以创建并运行一个或多个Pod,也可以创建一个 deployment 或job 来管理Pod。此命令和 docker run 相类似,也是实现Pod的创建,先从仓库中拉取基础镜像,然后对容器进行操作。

通过 kubectl run 命令创建 Nginx 容器, 指定名称为 nginx-deployment,指定基础镜像为 Nginx 目前最新版本,指定对外暴露的端口为 80 以及副本数为 3。Nginx 容器创建完成后使用 get pod 命令查看 Pod 的信息,可以发现确实有 3 个容器资源,并且处于 Running状态。还可以查看 deployment,也显示的是 3。

[root@k8s-master ~]#  kubectl run nginx-do --image=nginx:1.14 --port=80 --replicas=2
deployment "nginx-do" created

[root@k8s-master ~]# kubectl get pods
NAME                                READY   STATUS    RESTARTS   AGE

nginx-do          1/1       Running             0           1m
nginx-do     1/1       Running             0             1m

发布服务
容器资源创建完成,就需要完成发布工作,确保 Pod 能够对外提供服务,保证客户端能够正常访问,使用 kubectl expose 命令可以实现该目的。
 

通过 kubectl expose 命令创建 Service,设置内部通信端口和外部暴露的端口均为 80、名称为 nginx-service、类型是 NodePort。创建 Service 完后,就可以通过 kubectl get svc命令查看到对外暴露的端口是30464,内部通信的地址是10.254.108.146。

[root@k8s-master ~]#  kubectl expose deployment nginx-do --port=80 --target-port=80 --name=nginx --type=NodePort
service "nginx" exposed

查看

[root@k8s-master ~]# kubectl get pods,svc
NAME                                    READY   STATUS    RESTARTS   AGE
po/nginx-do-3943939860-d925b          1/1       Running             0           1m
po/nginx-do-3943939860-fq4zh      1/1       Running             0             1m

NAME                CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
svc/kubernetes      10.254.0.1       <none>        443/TCP        1d
svc/nginx           10.254.229.91    <nodes>       80:30040/TCP   38s
svc/nginx-service   10.254.108.146   <nodes>       80:30233/TCP   5m

执行 kubectl get endpoints 查看容器自带的负载均衡。从执行结果可以得知容器自带的负载均衡分别是 10.254.0.1  10.254.229.91    10.254.108.146 

[root@k8s-master ~]# kubectl get endpoints
NAME            ENDPOINTS            AGE
kubernetes      192.168.1.117:6443   1d
nginx           172.16.48.6:80       25m
nginx-service   172.16.48.4:80       30m

执行 kubectl get pods 命令时加参数 -o wide 可以查看到 Node 真实节点上的分布。
[root@k8s-master ~]# kubectl get pods -o wide
NAME                                READY   STATUS    RESTARTS   AGE    IP           NODE         NOMINATED NODE   READINESS GATES

nginx-do-3943939860-d925b          1/1       Running             0          27m       172.16.48.6   k8s-master
nginx-do-3943939860-fq4zh          0/1       ContainerCreating   0          27m       <none>        k8s-node2
完成上述步骤就已经完成了发布,并且可以进行对其访问。

 

[root@k8s-master ~]# curl 192.168.50.53:30040
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

修改其配置文件

[root@k8s-master ~]# docker exec -it 0a163ad392dc /bin/bash
root@nginx-do-3943939860-d925b:/# cd /usr/share/nginx/html/
root@nginx-do-3943939860-d925b:/usr/share/nginx/html# echo "sdfsdfsdfsd" > index.html

验证

[root@k8s-master ~]# curl 192.168.50.53:30040
sdfsdfsdfsd

今天先到这里再见

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/873940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LLM as Co-integrator:重塑团队间交互,持续改进信息对齐

封面由 Microsoft Designer 生成 在五月份的 QCon 大会上&#xff0c;我们分享了《探索软件开发新工序&#xff1a;LLM 赋能研发效能提升》。在那次分享里&#xff0c;我们重点提及了团队并非所有的时间在 SDLC 上&#xff0c;可能只有 30%~50% 时间在开发软件上&#xff0c;甚…

Gitlab CI/CD笔记-第二天-主机套接字进行构建并push镜像。

一、安装gitlab-runner 1.可以是linux也可以是docker的 2.本文说的是docker安装部署的。 二、直接上.gitlab-ci.yml stages: # List of stages for jobs, and their order of execution - build-image build-image-job: stage: build-image image: harbor.com:543/docke…

一周开发问题回顾(2023年08月07日-2023年08月13日)

一周开发问题回顾2023年08月07日-2023年08月13日 1. Arrays.asList()与 new ArrayList()的区别1.1 Arrays1.1.1补充 ArrayList(Arrays.asList(array)) 1.2 ArrayList()1.2.1 创建ArrayList的几种方法 2.Mysql中group by的使用方式3.画图4. 时间倒排5. 工厂策略设计模式6.List注…

第三课-界面介绍SD-Stable Diffusion 教程

前言 我们已经安装好了SD&#xff0c;这篇文章不介绍难以理解的原理&#xff0c;说使用。以后再介绍原理。 我的想法是&#xff0c;先学会画&#xff0c;然后明白原理&#xff0c;再去提高技术。 我失败过&#xff0c;知道三天打鱼两天晒网的痛苦&#xff0c;和很多人一样试了…

<Vite>HMR实现原理

什么是HMR&#xff1f; HMR&#xff08;Hot Module Replacement&#xff09;是一种开发工具&#xff0c;也就是热更新。用于在应用程序运行时替换、添加或删除模块&#xff0c;而无需完全重新加载整个页面或重新启动应用程序。这可以极大地提高开发效率和调试体验。 HMR的优势 …

MyEverything项目测试

一、自动化测试用例 二、功能测试 测试环境&#xff1a;win10、IDEA 2020.3.3 2.1目录文件选择功能 测试步骤&#xff1a; 1、运行项目&#xff0c;点击"选择目录"按钮 2、选择目标文件夹 3、点击"选择文件夹按钮" 4、重复上面三个步骤一次 期望结…

【C语言】每日一题(错误的集合)

最近在牛客、力扣上做题&#xff0c;花费海量时间&#xff0c;苦不堪言&#xff0c;有时绞尽脑汁也想不出&#xff0c;痛定思痛&#xff0c;每日记录写的比较困难的题。 错误的集合 题目如上图所示 题主乍看之下觉得很简单&#xff0c;再看例子&#xff0c;不就是一个有序数组…

【npm run dev报错】无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。

1.winX键&#xff0c;使用管理员身份运行power shell 2.输入命令&#xff1a;set-executionpolicy remotesigned 3.输入”Y“,回车&#xff0c;问题解决。 文章来源&#xff1a;无法加载文件 C:\Program Files\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本。 - 前…

自制手写机器人

写字机器人模拟在画图板上写字效果 写了一套写字机器人代码&#xff0c;有多种字体可供选择&#xff0c;需要的朋友私信获取代码和软件

LNMP分离部署

目录 前言 搭建LNMP 一、安装Nginx 配置基础环境 更改配置 二、安装Mysql 配置基础环境 重置root用户密码 登录创建数据库和授权用户 三、安装PHP 配置基础环境 验证Nginx 拓展连接Discuz 总结 前言 基于生产环境&#xff0c;如果所有服务都安装在一台主机上&…

C++入门之语法

不想写std::怎么办 https://blog.csdn.net/CSDN_fzs/article/details/105678692 1 基础必会 1.3 变量 作用&#xff1a;给一段指定的内存空间起名&#xff0c;方便操作这段内存 语法&#xff1a;数据类型 变量名 初始值; 示例&#xff1a; #include<iostream> usi…

面试总结-webpack/git

说说你对webpack的理解 webpack 是一个静态模块打包器&#xff0c;整个打包过程就像是一条生产线&#xff0c;把资源从入口放进去&#xff0c;经过一系列的加工&#xff08;loader&#xff09;&#xff0c;最终转换成我们想要的结果&#xff0c;整个加工过程还会有监控&#x…

Java获取指定文件夹下目录下所有视频并复制到另一个地方

import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.StandardCopyOption;public class VideoCopier {public static void main(String[] args) {// 指定源文件夹路径和目标文件夹路径String sourceFolderPath "path/to…

Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?

摘要 大语言模型能够通过上下文学习-只需要在推理阶段加入一些输入-标签的示例对&#xff0c;就能完成对新输入文本的预测。但是&#xff0c;对模型是如何学习&#xff0c;示例的哪些方面会影响最终的任务效果&#xff0c;我们知之甚少。在这篇纹章中&#xff0c;我们揭示了 正…

postman官网下载安装登录测试详细教程

目录 一、介绍 二、官网下载 三、安装 四、注册登录postman账号&#xff08;不注册也可以&#xff09; postman注册登录和不注册登录的使用区别 五、关于汉化的说明 六、使用示范 一、介绍 简单来说&#xff1a;是一款前后端都用来测试接口的工具。 展开来说&#xff1a;…

Redis集群(三十七)

部署搭建Redis主从复制、哨兵模式、集群部署 目录 一、Redis主从复制 &#xff08;一&#xff09;概念 &#xff08;二&#xff09;作用 &#xff08;三&#xff09;缺点 &#xff08;四&#xff09;流程 &#xff08;五&#xff09;搭建 二、Redis哨兵模式 &#xff0…

单体版ruoyi代码生成增删改查

目录 拉取代码 打开代码&#xff0c;新建一个模块&#xff0c;模块放我们的项目后台数据库的curd代码。 我们的新模块引入ruoyi的通用模块 ruoyi的adm引入我们的项目依赖&#xff0c;引用我们的模型、service、mapper 将我们的模块注入父项目 打开ruoyi-adm配置MyBatis&…

UDS的DID(Data identification)

引言 DID是UDS中的一个重要概念&#xff0c;它代表着特定的数据标识符。DID用于标识和获取ECU中的特定参数数据&#xff0c;如传感器数据、状态信息等。通过使用DID&#xff0c;诊断工具可以准确地获取所需的数据&#xff0c;从而帮助诊断人员更好地了解车辆的状态和性能。 D…

芯片工程师求职题目之CPU篇(3)

1. 什么是cache(缓存)&#xff1f;它的工作原理是什么&#xff1f; Cache是少量的快速内存。它位于主存储器和中央处理器之间。每当CPU请求memory位置的内容时&#xff0c;首先检查cache中是否有此数据。如果数据存在于cache中&#xff0c;CPU直接从cache中获得数据。这是更快…