kubernetes(k8s)集群常用指令

基础控制指令

# 查看对应资源: 状态

$ kubectl get <SOURCE_NAME> -n <NAMESPACE> -o wide

查看默认命名空间的pod
[root@k8s-master ~]# kubectl  get pod
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          3h53m查看所有pod
[root@k8s-master ~]# kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS        AGE
cloud2304     mysql                                      1/1     Running   0               3h40m
default       nginx                                      1/1     Running   0               3h53m
kube-system   calico-kube-controllers-7c87c5f9b8-cbh9g   1/1     Running   5 (5h56m ago)   28h
kube-system   calico-node-7m5tq                          1/1     Running   3 (7h53m ago)   28h
kube-system   calico-node-bth4k                          1/1     Running   3 (7h53m ago)   28h
kube-system   calico-node-zp4tx                          1/1     Running   3 (7h53m ago)   28h

查看指定命名空间的pod
kubectl get pod -n +命名空间名字删除pod
kubectl delete pod --force +pod名字 -n +命名空间默认查看到的命名空间是default,修改上下文关系,让查看到的是其他命名空间的pod
#修改默认命名空间为kuboard
[root@k8s-master ~]# kubectl config set-context --current --namespace kuboard
Context "kubernetes-admin@kubernetes" modified.
[root@k8s-master ~]# kubectl get pod
NAME                               READY   STATUS    RESTARTS        AGE
kuboard-agent-2-5cdbd5bb5d-zzr9s   1/1     Running   0               5h44m
kuboard-agent-54dbdc497d-qr2zl     1/1     Running   1 (5h43m ago)   5h44m
kuboard-etcd-f99qg                 1/1     Running   0               7h57m
kuboard-questdb-7cfc9cc858-tnhcz   1/1     Running   0               5h44m
kuboard-v3-5fc46b5557-fwsds        1/1     Running   0               7h57m#将默认命名空间改回default
[root@k8s-master ~]# kubectl config set-context --current --namespace default
Context "kubernetes-admin@kubernetes" modified.
[root@k8s-master ~]# kubectl get pod 
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          3h42m
动态查看pod
NAMESPACE     NAME                                       READY   STATUS    RESTARTS        AGE
cloud2304     mysql                                      1/1     Running   0               3h42m
default       nginx                                      1/1     Running   0               3h54m
kube-system   calico-kube-controllers-7c87c5f9b8-cbh9g   1/1     Running   5 (5h57m ago)   28h
kube-system   calico-node-7m5tq                          1/1     Running   3 (7h54m ago)   28h查看节点
[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES                  AGE   VERSION
k8s-master   Ready    control-plane,master   28h   v1.22.0
k8s-node1    Ready    <none>                 28h   v1.22.0
k8s-node2    Ready    <none>                 28h   v1.22.0

# 查看对应资源: 事件信息

$ kubectl describe <SOURCE_NAME> <SOURCE_NAME_RANDOM_ID> -n <NAMESPACE>

这个就好比容器的信息inspect

查看pod信息,主要用于排错用,重要的是查看文件的Events信息
kubectl describe pod -n  +命名空间名字  +pod名字  [root@k8s-master ~]# kubectl  describe pod -n kube-system kube-proxy-k7zrz 
Name:                 kube-proxy-k7zrz
Namespace:            kube-system
Priority:             2000001000
Priority Class Name:  system-node-critical
Node:                 k8s-node2/192.168.231.136
Start Time:           Mon, 11 Dec 2023 16:09:59 +0800
Labels:               controller-revision-hash=55847b5bbdk8s-app=kube-proxypod-template-generation=1
....

# 查看pod资源: 日志

$ kubectl logs -f <SOURCE_NAME_RANDOM_ID> [CONTINER_NAME] -n <NAMESPACE>

看pod日志,只有pod有日志
kubectl logs +pod名字 -n +命名空间名字[root@k8s-master ~]# kubectl logs kuboard-agent-2-5cdbd5bb5d-zzr9s -n kuboard 
KuboardEndpoint           : http://kuboard-v3
KuboardAgent              : kcp://kuboard-v3:10081
KUBOARD_AGENT_PROXY       : 
KUBOARD_AGENT_KEY         : 32b7d6572c6255211b4eec9009e4a816
KUBOARD_K8S_CLUSTER_NAME  : default
KUBOARD_ANONYMOUS_TOKEN   : pAMXXJ6vfee3CkEyEHVYTxsOtWCplcq6KUBOARD_AGENT_REMOTE_PORT_NGINX: 45001% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100   263  100   263    0     0  16437      0 --:--:-- --:--:-- --:--:-- 16437

# 创建资源: 根据资源清单

$ kubectl apply[or create] -f <SOURCE_FILENAME>.yaml

apply 与create都是运行某些文件

create只能运行第一次,再次运行就会报错

apply可以运行多次,后面运行还会帮你更行

# 删除资源: 根据资源清单

$ kubectl delete -f <SOURCE_FILENAME>.yaml

这些文件定义过的内容全部删除
kubectl delete -f xxxx.yaml

# 修改资源: 根据反射出的etcd中的配置内容, 生产中不允许该项操作, 且命令禁止

$ kubectl edit <SOURCE_NAME> <SOURCE_NAME_RANDOM_ID> -n <NAMESPACE>

edit是更新,编辑的意思
[root@k8s-master ~]# kubectl  get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS        AGE
cloud2304     mysql                                      1/1     Running   0               4h
default       nginx                                      0/1     Running   0                28h可以进行更新
kubectl edit daemonsets.apps pod名字 -n 命名空间名字即可自动更新,因为k8s更新是滚动更新

查看node状态

以什么形式查看
#查看node详细信息
[root@k8s-master ~]# kubectl get node -o wide
NAME         STATUS   ROLES                  AGE   VERSION   INTERNAL-IP       EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION           CONTAINER-RUNTIME
k8s-master   Ready    control-plane,master   28h   v1.22.0   192.168.231.134   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://24.0.7
k8s-node1    Ready    <none>                 28h   v1.22.0   192.168.231.135   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://24.0.7
k8s-node2    Ready    <none>                 28h   v1.22.0   192.168.231.136   <none>        CentOS Linux 7 (Core)   3.10.0-1160.el7.x86_64   docker://24.0.7以yaml形式查看
[root@k8s-master ~]# kubectl  get pod -o yaml
apiVersion: v1
items:
- apiVersion: v1kind: Podmetadata:annotations:cni.projectcalico.org/containerID: 27935188fd58c9ec77febe8af14bbb1e507c1cb67da0e202c317c380c43da75ccni.projectcalico.org/podIP: 10.244.169.129/32cni.projectcalico.org/podIPs: 10.244.169.129/32kubectl.kubernetes.io/last-applied-configuration: |
...以json形式查看
[root@k8s-master ~]# kubectl  get node -o json
{"apiVersion": "v1","items": [{"apiVersion": "v1","kind": "Node","metadata": {"annotations": {"kubeadm.alpha.kubernetes.io/cri-socket": "/var/run/dockershim.sock"
...

查看service对象

[root@k8s-master ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   28h

查看集群信息

[root@k8s-master ~]# kubectl cluster-info 
Kubernetes control plane is running at https://192.168.231.134:6443
CoreDNS is running at https://192.168.231.134:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

查看各组件信息

[root@k8s-master ~]# kubectl  get cs
Warning: v1 ComponentStatus is deprecated in v1.19+
NAME                 STATUS      MESSAGE                                                                                       ERROR
scheduler            Unhealthy   Get "http://127.0.0.1:10251/healthz": dial tcp 127.0.0.1:10251: connect: connection refused   
controller-manager   Healthy     ok                                                                                            
etcd-0               Healthy     {"health":"true","reason":""}  

有一个Unhealthy,修改

出现问题是scheduler,因此修改得文件就是scheduler.yaml,哪个出现问题修改哪个
[root@k8s-master ~]# vim /etc/kubernetes/manifests/kube-scheduler.yaml 

-- port 是指定默认端口,将其注释掉

查看另外的组件信息

$ kubectl -s https://api-server:6443 get componentstatuses
-s 指定

查看各资源对象对应的api版本

[root@k8s-master ~]# kubectl explain pod
KIND:     Pod
VERSION:  v1DESCRIPTION:Pod is a collection of containers that can run on a host. This resource iscreated by clients and scheduled onto hosts.
...

 查看帮助信息

$ kubectl explain deployment
$ kubectl explain deployment.spec
$ kubectl explain deployment.spec.replicas

创建pod与命名空间(名称空间)

通常写在xxx.yaml文件内

YAML的语法比较简单,主要有下面几个:
1、大小写敏感
2、使用缩进表示层级关系
3、缩进不允许使用tab,只允许空格( 低版本限制 )
4、缩进的空格数不重要,只要相同层级的元素左对齐即可
5、'#'表示注释YAML支持以下几种数据类型:
1、纯量:单个的、不可再分的值
2、对象:键值对的集合,又称为映射(mapping)/ 哈希(hash) / 字典(dictionary)
3、数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)补充说明:
1、书写yaml切记: 后面要加一个空格
2、如果需要将多段yaml配置放在一个文件中,中间要使用---分隔

创建名称空间

vim namespace.yaml
###
apiVersion: v1
kind: Namespace
metadata:name: webserver
###
#运行文件
$ kubectl apply -f namespace.yaml
# 如果通过命令行创建
$ kubectl create namespace webserver
# 删除名称空间[注意,这将删除名称空间下的所有资源]
$ kubectl delete namespace webserver

创建pod

(1)kind:指定了这个 API 对象的类型(Type),是一个 Pod,根据实际情况,此处资源类型可以是Deployment、Job、Ingress、Service等。

(2)metadata:包含Pod的一些meta信息,比如名称、namespace、标签等信息.

(3)spec:specification of the resource content 指定该资源的内容,包括一些container,storage,volume以及其他Kubernetes需要的参数,以及诸如是否在容器失败时重新启动容器的属性。可在特定Kubernetes API找到完整的Kubernetes Pod的属性。

"name": 容器名称
"image": 容器镜像
"command": 容器启动指令
"args": 指令参数
"workingDir": 工作目录
"ports": 容器端口
"env": 环境变量
"resource": 资源限制
"volumeMounts": 卷挂载
"livenessProbe": 存活探针
"readinessProbe": 就绪探针
"startupProbe": 启动探针
"livecycle": 钩子函数
"terminationMessagePath": 容器的异常终止消息的路径,默认在 /dev/termination-log
"imagePullPolicy": 镜像拉去策略
"securityContext": 安全上下文
"stdin": 给容器分配标准输入,类似docker run -i
"tty": 分配终端

创建一个pod

vim nginx.yaml
###
apiVersion: v1   ##指定版本
kind: Pod    ##指定类型
metadata:    ##包含的信息name: nginx  ##pod的名字labels:   ##标签,随便写app: nginx
#描述    
spec:containers:    ##容器- name: nginx  ##容器的名字image: nginx:1.20  ##容器所使用的镜像ports:   ##端口- containerPort: 80
###kubectl apply -f nginx.yaml

创建一个命名空间及pod

vim mysql.yaml
###
apiVersion: v1
kind: Namespace
metadata: name: cloud2304  ###名称空间的名字是cloud2304---   ###分隔符隔开,下面是创建pod--mysql
apiVersion: v1
kind: Pod
metadata:name: mysqlnamespace: cloud2304
spec:  ##描述containers:  ##容器- name: mysql   ##容器名字image: mysql  ##容器所需镜像env:  ##环境变量- name: MYSQL_ROOT_PASSWORD   ##定义用户登录数据库的密码value: "123456"
###kubectl apply -f mysql.yaml
[root@k8s-master ~]# kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS        AGE
cloud2304     mysql                                      1/1     Running   0               4h33m

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

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

相关文章

Vue3-36-路由-路由的元数据信息 meta

什么是 meta 简单的理解&#xff0c;meta 就是路由对象 的一个属性对象&#xff0c; 可以 通过这个 属性给 路由对象添加 一些必要的属性值&#xff0c; 在使用路由对象时可以获取到这个属性型对象&#xff0c;从而进行一些其他的逻辑判断。 meta 这个非常的简单&#xff0c;就…

深入了解ReadDirectoryChangesW并应用其监控文件目录

简介 监视指定目录的更改&#xff0c;并将有关更改的信息打印到控制台&#xff0c;该功能的实现不仅可以在内核层&#xff0c;在应用层同样可以。程序中使用 ReadDirectoryChangesW 函数来监视目录中的更改&#xff0c;并使用 FILE_NOTIFY_INFORMATION 结构来获取有关更改的信息…

BERT(从理论到实践): Bidirectional Encoder Representations from Transformers【1】

预训练模型:A pre-trained model is a saved network that was previously trained on a large dataset, typically on a large-scale image-classification task. You either use the pretrained model as is or use transfer learning to customize this model to a given t…

Python中的装饰器

顾名思义&#xff0c;函数装饰器就是对这个函数进行了装饰&#xff0c;比如在函数的前后进行日志打印等。在Python中&#xff0c;装饰器是一种特殊的语法&#xff0c;用于简化函数或方法的定义和调用。装饰器允许你在不修改原始函数代码的情况下&#xff0c;通过在其上应用装饰…

Apple M2 Pro芯片 + docker-compose up + mysql、elasticsearch pull失败问题的解法

背景 &#xff08;1&#xff09;从github上git clone了一个基于Spring Boot的Java项目&#xff0c;查看readme&#xff0c;发现要在项目的根目录下&#xff0c;执行“docker-compose up”。&#xff08;2&#xff09;执行“docker-compose up”的前提是&#xff0c;在macos上要…

Vue中break关键字

Change() {//每次触发该事件&#xff0c;都要讲data重新赋值一次this.data JSON.parse(JSON.stringify(this.data1));// 根据选中的等级更新数据switch (this.selectedlevel) {case 1:// 更新数据为一级数据this.data this.data.filter(item > item.level "1"…

【shell漫步】3 条件分支结构

碎碎念 接上文的运算符的内容&#xff0c;这一章终于开始接触控制结构 【shell漫步】2 运算符-CSDN博客 分支结构的写法 当我们要对不同情况采取不同措施的时候就要用到分支结构 在shell中分支结构的写法如下 if [ 情况1 ] then代码1 elif [ 情况2 ] then代码2 elif [ 情…

mysql四大引擎、账号管理以及建库

目录 一.数据库存储引擎1.1存储引擎的查看1.2InnoDB1.3MyISAM1.4 MEMORY1.5 Archive 二.数据库管理2.1元数据库分类2.2 操作2.3 MySQL库 三.数据表管理3.1三大范式3.2 整形3.3 实数3.4 字符串3.5 text&blob3.6 日期类型3.7 选中标识符 四.数据库账号管理4.1 查询用户4.2查看…

【论文阅读|冷冻电镜】DISCA: High-throughput cryo-ET structural pattern mining

论文题目 High-throughput cryo-ET structural pattern mining by unsupervised deep iterative subtomogram clustering 摘要 现有的结构排序算法的吞吐量低&#xff0c;或者由于依赖于可用模板和手动标签而固有地受到限制。本文提出了一种高吞吐量的、无需模板和标签的深度…

Kotlin协程学习之-01

由于协程需要支持挂起、恢复、因此对于挂起点的状态保存就显得机器关键。类似的&#xff0c;线程会因为CPU调度权的切换而被中断&#xff0c;它的中断状态会保存在调用栈当中&#xff0c;因而协程的实现也按照是否开辟相应的调用栈存在以下两种类型&#xff1a; 有栈协程&…

Zookeeper注册中心实战

Java学习手册面试指南&#xff1a;https://javaxiaobear.cn Spring Cloud Zookeeper通过自动配置和绑定到 Spring 环境和其他 Spring 编程模型习惯用法&#xff0c;为 Spring Boot 应用程序提供Apache Zookeeper集成。通过一些简单的注释&#xff0c;您可以快速启用和配置应用…

【RK3399 PCIE调试——硬件信息资源获取】

一、1、 硬件接口 二、2、 PCB原理图 三、 官网地址&#xff1a; https://t.rock-chips.com/portal.php 相关资料和固件烧写可参考资料下载菜单

WPF 使用矢量字体图标

矢量字体图标 在WPF项目中经常需要显示图标&#xff0c;但是项目改动后&#xff0c;有时候需要替换和修改图标&#xff0c;这样非常麻烦且消耗开发和美工的时间。为了快速开发项目&#xff0c;节省项目时间&#xff0c;使用图标矢量字体图标是一个非常不错的选择。 矢量字体图标…

github 好项目 之 reference

github项目地址 网页网址 点进去以后你可以看到很多关于技术前沿的东西的简单笔记&#xff0c;一些实践的代码&#xff0c;或者是一些快捷键的命令 我个人比较喜欢 latex 的数学公式笔记 以及关于 vim 的一些命令 还有我最喜欢的git命令

算法训练第六十天|84.柱状图中最大的矩形

84.柱状图中最大的矩形&#xff1a; 题目链接 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 : 输入&#xff1a;heights [2,1,5,6,2,3] 输出…

虾皮长尾词工具:如何使用关键词工具优化Shopee产品的长尾关键词

在Shopee&#xff08;虾皮&#xff09;平台上&#xff0c;卖家们都希望能够吸引更多的潜在买家&#xff0c;提高产品的曝光率和转化率。而要实现这一目标&#xff0c;了解和使用长尾关键词是非常重要的。本文将介绍长尾关键词的定义、重要性以及如何使用关键词工具来优化Shopee…

手势识别+人脸识别+姿态估计(关键点检测+教程+代码)

手势识别和手势关键点检测是计算机视觉领域中的一个重要研究方向,涉及到从图像或视频中检测人手的位置和姿态信息,并推断出手势的意义。以下是一些可能用到的方法和技术: 手势识别 基于深度学习的手势识别 基于深度学习的手势识别是目前最流行的方法之一。它通常使用卷积神…

二刷Laravel 教程(构建页面)总结Ⅰ

L01 Laravel 教程 - Web 开发实战入门 ( Laravel 9.x ) 一、功能 1.会话控制&#xff08;登录、退出、记住我&#xff09; 2.用户功能&#xff08;注册、用户激活、密码重设、邮件发送、个人中心、用户列表、用户删除&#xff09; 3.静态页面&#xff08;首页、关于、帮助&am…

VMware 安装 macOS虚拟机(附工具包)

VMware 安装 macOS虚拟机&#xff0c;在Windows上体验苹果macOS系统&#xff01; 安装教程&#xff1a;VMware 安装 macOS虚拟机VMware Workstation Pro 是一款强大的虚拟机软件&#xff0c;可让您在 Windows 电脑上运行 macOS 系统。只需简单几步操作&#xff0c;即可轻松安装…

【docker】数据卷和数据卷容器

目录 一、如何管理docker容器中的数据&#xff1f; 二、数据卷 1、数据卷原理 2、数据卷的作用 3、数据卷案例 三、数据卷容器 1、数据卷容器作用 2、数据卷容器案例 四、容器互连&#xff08;centos镜像&#xff09; 一、如何管理docker容器中的数据&#xff1f; 二、…