IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 运维实操——kubernetes(二)Pod管理与应用、资源清单 -> 正文阅读

[系统运维]运维实操——kubernetes(二)Pod管理与应用、资源清单

1、什么是pod?

Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个pod都有一个唯一的ip。pod可以理解为是花生壳,一个pod中好几个花生豆(container),也可能一个pod中一个container,里面的container共享pod内的IP、Network和ns(namespace)等资源,这样就存在容器的多个副本不能直接放在一个pod里的问题,必须靠端口不同来区分一个pod中的不同容器。所有功能都是通过api接口实现。
在这里插入图片描述

2、pod中常用命令

本文是已经搭建好k8s集群,server1做仓库,server2是集群的master,server3和server4是集群的worker

(1)查看

kubectl get pod -n kube-system查看k8s系统服务
在这里插入图片描述

kubectl run demo --image=myapp:v1		%创建新的pod,叫demo
kubectl get node						%查看所有pod的简单信息
kubectl get node -o wide				%查看所有pod的ip和节点服务位置
kubectl describe pod demo				%查看demo的详细信息
kubectl  get all						%查看所有资源信息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
查看flannel环境,可以看到mater主机是0网段,
在这里插入图片描述

server3是1网段,
在这里插入图片描述

server4是2网段,
在这里插入图片描述

访问上面建立的demo服务,确实用的是myapp:v1镜像。
kubectl delete pod demo 删除名叫demo的pod
在这里插入图片描述

(2)部署Deployment、扩容、更新、回滚

创建两个副本,可以看到这里正好两个副本都在server3。
在这里插入图片描述
我们删除一个副本,查看发现,数量还是两个,但是号码换了。这是因为Deployment控制器的机制,他发现副本数量不足2时,他会自动创建,补足两个副本。
在这里插入图片描述
集群内部任意节点可以访问Pod,但集群外部无法直接访问。
kubectl expose deployment demo --port=80 --target-port=80,此时pod客户端可以通过service的名称或ip访问后端的两个Pod,设定可供集群外部访问的虚拟IP
在这里插入图片描述
访问该虚拟ip,可以看到负载均衡的落在两个后端上
在这里插入图片描述
kubectl describe svc demo 可以详细的看到demo这个服务的虚拟ip和两个后端
在这里插入图片描述
Pod扩容,从2个副本变为6个副本。
在这里插入图片描述
可以看到有六个后端服务
在这里插入图片描述
测试负载均衡
在这里插入图片描述
同理,缩容也很简单,多余的副本会被回收(缩容时,最新创建pod的会被最先删除)
在这里插入图片描述

镜像从myapp:v1更新为myapp:v2
在这里插入图片描述

查看,更新后的v2是7bd47bddfc这个,开启的副本数量是2。可以看到5b4fc8bb88的信息也保存着,但是开启的副本数量是0,问什么还要保存他的信息呢?这是因为回滚时的需要。
在这里插入图片描述

kubectl rollout history deployment demo	%查看历史版本
kubectl rollout undo deployment demo --to-revision=1	%回滚版本

3、资源清单介绍

在k8s中,一般使用yaml格式的文件来创建我们期望产生的pod,该yaml文件称为资源清单,可以减少命令行的使用,减少错误,可重复性好,可以规范化部署,因此备受喜爱

4、资源清单实现

编写pod.yaml 文件

[root@server2 pod]# cat pod.yaml 
apiVersion: v1		%指明api资源属于哪个群组和版本,同一个组可以有多个版本
kind: Pod			%标记创建的资源类型,k8s主要支持以下资源类别(Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob)
metadata:			%元数据
  name: pod-example	%对象名称
spec:				%定义目标资源的期望状态
  containers:
  - name: myapp						%容器名字
    image: myapp:v1	%指定镜像

在这里插入图片描述

用pod.yaml 文件创建pod
在这里插入图片描述

修改pod.yaml 文件

[root@server2 pod]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  containers:
  - name: myapp
    image: myapp:v1
    imagePullPolicy: IfNotPresent		%优先在已有镜像的服务端创建,不再重复拉取镜像,节省资源
    ports:				%指定容器所在主机需要监听的端口号,会写到iptables策略中
      - containerPort: 80
        hostPort: 80					%利用NAT把物理机的80端口影射到容器的80端口

在这里插入图片描述
拉起pod后,节点分配到了server3上,查看iptables
在这里插入图片描述

修改pod.yaml 文件

[root@server2 pod]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  hostNetwork: true				%直接把物理机的端口给容器用
  containers:
  - name: myapp
    image: myapp:v1
    imagePullPolicy: IfNotPresent		

在这里插入图片描述

拉起pod后,可以看到pod与物理机共用ip
在这里插入图片描述
查看端口
在这里插入图片描述

使用清单限制内存和CPU,修改pod.yaml 文件

[root@server2 pod]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  hostNetwork: true	
  containers:
  - name: myapp
    image: myapp:v1
    imagePullPolicy: IfNotPresent
    resources:
      requests:			%对cpu和mem的最低要求
        cpu: "100m"
        memory: "50Mi"
      limits:			%对cpu和mem的最高限制
        cpu: "200m"
        memory: "100Mi"

在这里插入图片描述
kubectl apply -f pod.yaml拉起pod,kubectl describe pod pod-example查看
在这里插入图片描述
默认容器副本退出后会自动重启always,这里可以使用never参数设置不重启。退出后,该节点显示已完成,且不会自动重启
在这里插入图片描述
如何指定该pod节点去server4创建?修改pod.yaml 文件

[root@server2 pod]# cat pod.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  nodeName: server4				%使用server4作为后端
  containers:
  - name: myapp
    image: myapp:v1
    imagePullPolicy: IfNotPresent
    resources:
      requests:			%对cpu和mem的最低要求
        cpu: "100m"
        memory: "50Mi"
      limits:			%对cpu和mem的最高限制
        cpu: "200m"
        memory: "100Mi"

在这里插入图片描述
kubectl apply -f pod.yaml拉起pod,查看确实在server4
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 16:36:09  更:2021-07-28 16:36:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 16:46:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码