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学习笔记三:NameSpace和Pod管理 -> 正文阅读

[系统运维]Kubernetes学习笔记三:NameSpace和Pod管理

0.kubectl使用

vim /etc/profile 进入配置文件,定义别名=原命令操作
source /etc/profile 使配置文件生效
kubectl命令补全工具 bash-completion
在这里插入图片描述
在这里插入图片描述

1.NameSpace管理

(1)查看全部命名空间

kubectl get namespaces
在这里插入图片描述

(2) 创建新的命名空间

kubectl create namespace test20220130
在这里插入图片描述

(3)查看kubeconfig配置文件信息

kubectl config view
在这里插入图片描述

(5)查询当前配置的上下文信息

kubectl config current-context
在这里插入图片描述

(6)修改默认的命名空间为kube-system

kubectl config set-context --current --namespace=kube-system
在这里插入图片描述

2.Pod管理

(1)使用命令创建Pod

kubectl run nginx2 --image=nginx:1.9
Pod名称是nginx2,使用的镜像是版本1.9的nginx。
在这里插入图片描述

(2)查看Pod的状态

kubectl get pods
查询pod的状态,发现一直是Pending状态。
在这里插入图片描述

(3)查看pod的详细信息

kubectl describe pod nginx2

发现一个异常信息:1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn’t tolerate.

参考:0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn‘t
在这里插入图片描述

(4)查询Node污点标记

kubectl describe node izwz903eefgw1nuwzx28cdz | grep Taint
master默认被设置为不可调度的。
在这里插入图片描述

(5)添加和取消Node的污点标记

kubectl taint node izwz903eefgw1nuwzx28cdz node-role.kubernetes.io/master:NoSchedule-
将node标记为可以调度的(在污点后面加一个减号就是取消标记)。

再次查看Pod的状态和详细信息,变成Running状态了。
在这里插入图片描述
再次查看Pod详细信息,创建Pod成功。
在这里插入图片描述
添加污点
kubectl taint nodes node1 key1=value1:NoSchedule

添加容忍度:

spec:
  tolerations:
  - key: "example-key"
    operator: "Exists"
    effect: "NoSchedule"
(6)对使用的资源进行限额
(6.1)设置limit和requests

创建qos-demo.yaml文件,设置limits和requests。使用yaml文件的方式创建一个Pod:
kubectl apply -f qos-demo.yaml

apiVersion: v1
kind: Pod
metadata:
  name: qos-demo
spec:
  containers:
  - name: qos-demo-ctr
    image: nginx
    resources:
      limits:
        memory: "100Mi"
        cpu: "300m"
      requests:
        memory: "100Mi"
        cpu: "300m"

查看Pod的详细信息:kubectl describe pod qos-demo

对应的Qos Class是Guaranteed。
在这里插入图片描述

(6.2)只设置requests

创建qos-demo-2.yaml

kubectl apply -f qos-demo-2.yaml

apiVersion: v1
kind: Pod
metadata:
  name: qos-demo-2
spec:
  containers:
  - name: qos-demo-ctr-2
    image: nginx
    resources:
      requests:
        memory: "100Mi"
        cpu: "300m"

kubectl describe pod qos-demo-2

对应的Qos Class是Guaranteed。
在这里插入图片描述

(6.3)不设置requests和limit

创建nginx.yaml文件

kubectl apply -f nginx.yaml

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: nginx
spec:
  containers:
  - image: nginx:1.9
    name: nginx
    ports:
    - containerPort: 80
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

kubectl describe pod nginx

对应的Qos Class是BestEffort。
在这里插入图片描述

(7)查看组件的状态

kubectl get cs
在这里插入图片描述

(8)kubernetes自动应用/etc/kubernetes/manifests下的yaml文件

在/etc/kubernetes/manifests文件夹下建立static-web.yaml文件。

docker会自动把这个pod启动。如果想要删除这个Pod,则直接把文件删除。
watch -n 1 kubectl get pods 每隔1s监控pod的变化情况。
kubectl get pod -w 监控pod的变化

apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    name: static-web
spec:
  containers:
  - name: static-web
    image: nginx
    ports:
    - name: web
      containerPort: 80

在这里插入图片描述
在这里插入图片描述

(9)父子容器

initContainer:用于在主容器启动前执行初始化工作。
在Kubernetes官网上有一个例子,需要等到init-myservice和init-mydb两个子容器完成后,才会创建myapp-container。

apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox:1.28
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
  initContainers:
  - name: init-myservice
    image: busybox:1.28
    command: ['sh', '-c', "until nslookup myservice.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for myservice; sleep 2; done"]
  - name: init-mydb
    image: busybox:1.28
    command: ['sh', '-c', "until nslookup mydb.$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace).svc.cluster.local; do echo waiting for mydb; sleep 2; done"]
(10)指定Node节点创建Pod

需要将Pod启动到带有disktype=ssd标签的节点上。

apiVersion: v1
kind: Pod
metadata:
  name: nginx-ssd
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx:1.7.9
    imagePullPolicy: IfNotPresent
  nodeSelector:
    disktype: ssd

找不到带有disktype=ssd标签的节点,Pod无法创建一直处于Pending状态。
在这里插入图片描述
查看Pod创建的详细信息。
在这里插入图片描述
kubectl label node iZwz903eefgw1nuwzx28cdZ distype=ssd
给节点添加标签

kubectl get nodes --show-labels
查看Node的标签信息
在这里插入图片描述
有了符合条件的Node,会自动创建Pod,不需要重启。
在这里插入图片描述

(11)查询属性描述

kubectl explain pod.spec.containers.imagePullPolicy
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章           查看所有文章
加:2022-02-04 11:23:53  更:2022-02-04 11:26:29 
 
开发: 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/16 6:31:02-

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