首页
友情链接
关于
Search
1
Docker 拉取镜像报错 “missing signature key” 解决办法
1,526 阅读
2
如何在CentOS 7中升级Linux内核
616 阅读
3
docker 常用命令
239 阅读
4
k8s 常用命令
235 阅读
5
创建PV报错信息:device is partitioned
230 阅读
默认分类
Liinux系统管理
容器
云计算
虚拟化
编程语言
数据库
AI
登录
/
注册
Search
标签搜索
Docker
shell脚本
Linux 系统管理
k8s
LVM
KVM
网络服务
Nginx
Ubuntu
内核升级
Linux用户管理
系统管理
MySQL
共享存储
Abbott
累计撰写
38
篇文章
累计收到
2
条评论
首页
栏目
默认分类
Liinux系统管理
容器
云计算
虚拟化
编程语言
数据库
AI
页面
友情链接
关于
搜索到
38
篇与
的结果
2024-05-24
LVM 逻辑卷管理
什么是逻辑卷LVM是Linux的逻辑卷管理器。它提供了对磁盘空间的管理,与基于主和逻辑分区的标准磁盘分区相比,磁盘空间更灵活,限制更少。LVM受到所有主要Linux发行版的支持,它甚至在Fedora和RHEL上默认使用在计算机存储中,逻辑卷管理或LVM提供了一种在大容量存储设备上分配空间的方法,这种方法比传统的分区方案更灵活地存储卷。特别是,卷管理器可以连接、条带在一起或以其他方式将分区(或一般块设备)组合成更大的虚拟分区,管理员可以调整大小或移动,可能不会中断系统使用。LVM是一个用于逻辑卷管理的工具,包括分配磁盘、条带、镜像和调整逻辑卷大小。使用LVM,硬盘驱动器或一组硬盘驱动器被分配给一个或多个物理卷。LVM物理卷可以放置在可能跨越两个或更多磁盘的其他块设备上.物理卷被合并成逻辑卷,但/boot分区除外。/boot分区不能在逻辑卷组上,因为引导加载程序无法读取它。如果根(/)分区位于逻辑卷上,请创建一个单独的/boot分区,该分区不是卷组的一部分。由于物理卷不能跨越多个驱动器,要跨越多个驱动器,请为每个驱动器创建一个或多个物理卷。用途LVM用于以下目的:创建多个物理卷或整个硬盘的单个逻辑卷(有点类似于RAID 0,但更类似于JBOD),允许动态重新调整卷大小。通过允许添加和更换磁盘,而不会停机或服务中断,结合热交换来管理大型硬盘更换。在小型系统(如桌面)上,LVM无需在安装时估计分区需要多大,而是允许文件系统根据需要轻松调整大小。通过拍摄逻辑卷的快照来执行一致的备份。用一个密码加密多个物理分区专业术语物理卷(Physical Volumes 缩写pv)这是LVM使用的物理存储。它可能是整个磁盘或现有分区。卷组(Volume Group vg)这是一个或多个物理卷的集合,它包含逻辑卷。逻辑卷(Logical Volume lv)这是LVM提供的空间,您可以将其用作分区来制作文件系统和存储文件。PE最小存储单元,默认大小(4MB)逻辑卷的管理在Linux系统中如果没有LVM的命令(最小化安装) [root@localhost ~]# dnf search lvm ======================================================= Name Matched: lvm ======================================================== llvm.i686 : The Low Level Virtual Machine llvm.x86_64 : The Low Level Virtual Machine lvm2.x86_64 : Userland logical volume management tools [root@localhost ~]# dnf -y install lvm2.x86_64一、 物理卷管理1.1 创建物理卷命令: pvcreate描述:初始化磁盘或分区供 LVM 使用。Ex:[root@localhost ~]# pvcreate /dev/vdb Wiping dos signature on /dev/vdb. Physical volume "/dev/vdb" successfully created.1.2 查看pv命令: pvdisplay描述: 显示所有的物理卷语法: pvdisplay [pv_name]Ex:[root@localhost ~]# pvdisplay "/dev/vdb" is a new physical volume of "20.00 GiB" --- NEW Physical volume --- PV Name /dev/vdb VG Name PV Size 20.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID jzEyr7-KheP-2PiZ-G1Pz-b1xq-cZcc-G4gzkb1.3 删除 PV命令:pvremove描述: 移除逻辑卷 Ex:[root@localhost ~]# pvremove -f /dev/vdb Labels on physical volume "/dev/vdb" successfully wiped 二、 卷组管理2.1 创建卷组命令:vgcreate语法:vgcreate 卷组名称 {物理卷1 物理卷2 物理卷n}Ex:[root@localhost ~]# vgcreate test_vg /dev/vdb Volume group "test_vg" successfully created2.2 显示卷组 命令: vgdisplayEx:[root@localhost ~]# vgdisplay --- Volume group --- VG Name test_vg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size <20.00 GiB PE Size 4.00 MiB Total PE 5119 Alloc PE / Size 0 / 0 Free PE / Size 5119 / <20.00 GiB VG UUID 3WGvBc-dyNf-1eYn-gIsi-V2zO-OPND-8YlIBY2.3 删除卷组命令: vgremove Ex:[root@localhost ~]# vgremove test_vg Volume group "test_vg" successfully removed三、 逻辑卷管理3.1 创建逻辑卷命令: lvcreate语法: lvcreate [选项] 逻辑卷的名称 VG选项:-L #指定逻辑卷的大小,单位G M K -i #指定raid的级别,磁盘阵列-l #以逻辑扩展为单位指定新 LV 的大小-n #指定逻辑卷的名称Ex:[root@localhost ~]# lvcreate -L5G test_vg WARNING: ext4 signature detected on /dev/test_vg/lvol0 at offset 1080. Wipe it? [y/n]: y Wiping ext4 signature on /dev/test_vg/lvol0. Logical volume "lvol0" created.3.2 查看逻辑卷[root@localhost ~]# lvdisplay --- Logical volume --- LV Path /dev/test_vg/lvol0 LV Name lvol0 VG Name test_vg LV UUID FZ32YS-sg2B-etWG-Y84C-hqyR-gaHG-9TCYnj LV Write Access read/write LV Creation host, time localhost, 2024-05-18 15:34:06 +0800 LV Status available # open 0 LV Size 5.00 GiB Current LE 1280 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 252:03.3 移除逻辑卷[root@localhost ~]# lvremove /dev/test_vg/lvol0 Do you really want to remove active logical volume test_vg/lvol0? [y/n]: y Logical volume "lvol0" successfully removed.3.4 扩容命令: lvextend描述:Add space to a logical volume 为逻辑卷添加空间Ex:[root@bogon ~]# lvextend -L 10G /dev/test_vg/test_lv Size of logical volume test_vg/test_lv changed from 5.00 GiB (1280 extents) to 10.00 GiB (2560 extents). Logical volume test_vg/test_lv successfully resized. [root@bogon ~]# lvdisplay --- Logical volume --- LV Path /dev/test_vg/test_lv LV Name test_lv VG Name test_vg LV UUID 9c1tLT-Dyul-qvWp-QdsN-pAYA-oyba-XeyKeW LV Write Access read/write LV Creation host, time localhost, 2024-05-18 15:46:39 +0800 LV Status available # open 1 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 252:0 #刷新文件系统 - resize2fs 支持`ext2,3,4` 不支持xfs - xfs_growfs 支持xfs文件系统 [root@bogon ~]# xfs_growfs /dev/mapper/test_vg-test_lv meta-data=/dev/mapper/test_vg-test_lv isize=512 agcount=4, agsize=327680 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=0 inobtcount=0 data = bsize=4096 blocks=1310720, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 1310720 to 2621440 [root@bogon ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.8G 0 1.8G 0% /dev tmpfs 1.8G 0 1.8G 0% /dev/shm tmpfs 1.8G 25M 1.8G 2% /run tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup /dev/vda3 17G 5.1G 12G 30% / /dev/vda2 2.0G 47M 2.0G 3% /home /dev/vda1 1014M 212M 803M 21% /boot /dev/mapper/test_vg-test_lv 10G 104M 9.9G 2% /test_lv tmpfs 367M 0 367M 0% /run/user/0四、 格式化逻辑卷(创建文件系统)[root@localhost ~]# mkfs.xfs /dev/test_vg/test_lv meta-data=/dev/test_vg/test_lv isize=512 agcount=4, agsize=327680 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 bigtime=0 inobtcount=0 data = bsize=4096 blocks=1310720, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0五、 挂载使用5.1 临时挂载[root@localhost ~]# mkdir /lv_tst [root@localhost ~]# mount /dev/test_vg/test_lv /lv_tst/ [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 1.8G 0 1.8G 0% /dev tmpfs 1.8G 0 1.8G 0% /dev/shm tmpfs 1.8G 17M 1.8G 1% /run tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup /dev/vda3 17G 5.1G 12G 30% / /dev/vda2 2.0G 47M 2.0G 3% /home /dev/vda1 1014M 212M 803M 21% /boot tmpfs 367M 0 367M 0% /run/user/0 /dev/sr0 12G 12G 0 100% /mnt /dev/mapper/test_vg-test_lv 5.0G 68M 5.0G 2% /lv_tst5.2 永久挂载实现永久挂载,需要修改主配置文件 /etc/fstab[root@localhost ~]# cat /etc/fstab UUID=787a972d-9811-42a3-b57b-8ecb567e23a4 / xfs defaults 0 0 UUID=2ccfb650-c2b0-4822-bea5-b8da75434b52 /boot xfs defaults 0 0 UUID=0541f6b0-a7f4-4566-8e63-30b87aa83a01 /home xfs defaults 0 0 # 挂载的目录 挂载点 文件系统 defaults 0 0 UUID=9c1tLT-Dyul-qvWp-QdsN-pAYA-oyba-XeyKeW /test_lv xfs defaults 0 0 或者使用文件的路径 /dev/test_vg/test_lv /test_lv xfs defaults 0 0 # 获取UUID [root@localhost ~]# blkid /dev/vdb: UUID="V6TrIv-Aip2-gyat-kxAa-6mK0-3zPL-zzRWEY" TYPE="LVM2_member" /dev/mapper/test_vg-test_lv: UUID="f4366c5b-231b-47d8-a39a-41fc0b55c8b9" BLOCK_SIZE="512" TYPE="xfs"切记:不能写错5.2.1 测试文件是否输入正确[root@localhost ~]# mount -a #读取/etc/fastab文件中的所有内容 [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/test_vg-test_lv 5.0G 68M 5.0G 2% /test_lv案例[root@localhost ~]# pvcreate /dev/vd{c..e} Physical volume "/dev/vdc" successfully created. Physical volume "/dev/vdd" successfully created. Physical volume "/dev/vde" successfully created. # 创建卷组 vgcreate my_test_vg /dev/vdc /dev/vdd #创建逻辑卷 lvcreate -L 10G -n test_lv_test my_test_vg #创建文件系统 mkfs.ext4 /dev/my_test_vg/test_lv_test #创建挂载点 mkdir /test_lv_1 #挂载测试 mount /dev/my_test_vg/test_lv_test /test_lv_1/ #扩容 lvextend -L 15G /dev/my_test_vg/test_lv_test #刷新文件系统 [root@localhost ~]# resize2fs /dev/my_test_vg/test_lv_test resize2fs 1.45.6 (20-Mar-2020) Filesystem at /dev/my_test_vg/test_lv_test is mounted on /test_lv_1; on-line resizing required old_desc_blocks = 2, new_desc_blocks = 2 The filesystem on /dev/my_test_vg/test_lv_test is now 3932160 (4k) blocks long. #验证 [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/my_test_vg-test_lv_test 15G 24K 14G 1% /test_lv_1 # 添加物理卷到卷组中 [root@localhost ~]# vgextend my_test_vg /dev/vd vda vda1 vda2 vda3 vdb vdc vdd vde [root@localhost ~]# vgextend my_test_vg /dev/vde Volume group "my_test_vg" successfully extended [root@localhost ~]# vgdisplay my_test_vg --- Volume group --- VG Name my_test_vg System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 3 Act PV 3 VG Size <29.99 GiB PE Size 4.00 MiB Total PE 7677 Alloc PE / Size 2560 / 10.00 GiB Free PE / Size 5117 / <19.99 GiB VG UUID a5wcDK-0edK-LzGd-BV5a-GaSk-wuk3-iVEfct
2024年05月24日
146 阅读
0 评论
0 点赞
2024-05-21
kvm 管理工具webvirtmgr
介绍WebVirtMgr是一个基于libvirt的Web界面,用于管理虚拟机。它允许您创建和配置新域,并调整域的资源分配。VNC查看器向来宾域显示一个完整的图形控制台。KVM是目前唯一支持的虚拟机管理程序。技术:应用程序逻辑是用Python和Django编写的。LIBVIRT Python绑定用于与底层虚拟机管理程序交互。安装1. 查看系统版本[root@web ~]# hostnamectl Static hostname: web.server.com Icon name: computer-desktop Chassis: desktop Machine ID: e57ef32020fa406d9bbee213aba339ed Boot ID: 5a70728f01fd4402a40d90d47e3f10df Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-1160.114.2.el7.x86_64 Architecture: x86-642. 安装]# yum -y install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release ]# yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx gcc python-devel ]# pip3 install numpy 3.安装python要求并设置Django环境[root@web ~]# git clone https://github.com/retspen/webvirtmgr.git [root@web ~]# cd webvirtmgr [root@web webvirtmgr]# pip install -r requirements.txt4.同步用户数据[root@web webvirtmgr]# ./manage.py syncdb WARNING:root:No local_settings file found. Creating tables ... Creating table auth_permission Creating table auth_group_permissions Creating table auth_group Creating table auth_user_groups Creating table auth_user_user_permissions Creating table auth_user Creating table django_content_type Creating table django_session Creating table django_site Creating table servers_compute Creating table instance_instance Creating table create_flavor You just installed Django's auth system, which means you don't have any superusers defined. Would you like to create one now? (yes/no): yes Username (leave blank to use 'root'): root Email address: Password: Password (again): Superuser created successfully. Installing custom SQL ... Installing indexes ... Installed 6 object(s) from 1 fixture(s)5.添加一个超级用户[root@web webvirtmgr]# ./manage.py createsuperuser Username: abbott Email address: Password: Password (again): Superuser created successfully.运行服务[root@web webvirtmgr]# ./manage.py runserver & 默认端口:"8000"6.配置Nginx作为web代理6.1 将项目文件拷贝到/var/www/在/etc/nginx/conf.d添加文件webvirtmgr.conf:[root@web webvirtmgr]# cp webvirtmgr /var/www/ -R6.2 配置nginx代理server { listen 80 default_server; server_name $hostname; #access_log /var/log/nginx/webvirtmgr_access_log; location /static/ { root /var/www/webvirtmgr/webvirtmgr; # or /srv instead of /var expires max; } location ~ .*\.(js|css)$ { proxy_pass http://127.0.0.1:8000; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-Proto $scheme; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; client_max_body_size 1024M; # Set higher depending on your needs } }6.3 检查nginx配置语法是否正确[root@web nginx]# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful6.4 启动nginx[root@web nginx]# systemctl start nginx [root@web nginx]# systemctl enable nginx最终实现
2024年05月21日
124 阅读
0 评论
0 点赞
2024-05-20
KVM
一、概述KVM(用于基于内核的虚拟机)是包含虚拟化扩展(英特尔VT或AMD-V)的x86硬件上的Linux的完整虚拟化解决方案。它由一个可加载的内核模块kvm.ko组成,该模块提供核心虚拟化基础设施和一个特定于处理器的模块kvm-intel.ko或kvm-amd.ko。使用KVM,可以运行多台运行未经修改的Linux或Windows映像的虚拟机。每个虚拟机都有私有虚拟化硬件:网卡、磁盘、图形适配器等。KVM是开源软件。KVM的内核组件包含在主线Linux中,截至2.6.20。从1.3开始,KVM的用户空间组件包含在主线QEMU中。KVM(Kernel-based Virtual Machine)是一个内核基于的虚拟化技术,它允许用户在Linux操作系统上创建、管理和运行虚拟机(VM)。KVM使用操作系统的内核功能来实现虚拟化,而不依赖于外部虚拟化软件或硬件。Machine)是一个内核基于的虚拟化技术,它允许用户在Linux操作系统上创建、管理和运行虚拟机(VM)。KVM使用操作系统的内核功能来实现虚拟化,而不依赖于外部虚拟化软件或硬件。KVM使用两个主要组件来实现虚拟化:QEMU(快速可扩展虚拟机):QEMU是一个开源的处理器虚拟化和模拟程序,它允许用户在不同的硬件和操作系统上运行不同类型的虚拟机。KVM使用QEMU来实现虚拟化的执行环境。Linux内核:Linux内核具有一些特性,例如对于虚拟化的支持(虚拟化扩展)和虚拟化功能(虚拟网络、块设备等),这些特性允许KVM实现高效且低延迟的虚拟化。使用KVM,用户可以在同一台物理机上创建多个虚拟机,每个虚拟机都可以运行自己独立的操作系统和应用程序。这种虚拟化技术提供了灵活性、资源分配控制和安全性安装KVM 检查CPU是否开启虚拟化检查内核版本:内核版本越新,虚拟化技术的支持越多。使用 uname -r 命令查看内核版本:uname -r检查硬件虚拟化支持:Intel 处理器:使用 lscpu 或 cpuinfo 命令查看 CPU 信息,查找包含 “vmx”、“vt-x”、“intel-vtd” 等关键词。例如:lscpu # 或者 cat /proc/cpuinfo | grep -i virtualizationAMD 处理器:使用 lscpu 或 cpuinfo 命令查看 CPU 信息,查找包含 “svm”、“amd-v” 等关键词。例如:lscpu # 或者 cat /proc/cpuinfo | grep -i virtualization验证是否支持虚拟化:在虚拟机管理器(如 VirtualBox、QEMU/KVM、Virtual Server 等)中,尝试创建一个新的虚拟机或检查已有虚拟机的性能和功能。这将告诉你系统是否支持虚拟化并运行虚拟机。安装KVM程序Rehat系列更新系统缓存并升级已有软件包:sudo yum update安装虚拟网卡驱动程序(如果需要):Intel 处理器:sudo yum install -y kmod-virtio virtio-pciAMD 处理器:sudo yum install -y kmod-vfio virtio-pci安装 QEMU/KVM 软件包:sudo yum install -y qemu-kvm qemu-img libvirt libvirt-daemon libvirt-client virt-manager启动和配置 libvirtd 服务(虚拟化管理服务):启动 libvirtd 服务:sudo systemctl start libvirtd使 libvirtd 在系统重新启动时自动开始:sudo systemctl enable libvirtd配置 firewalld(如果需要):启用虚拟网卡所需的防火墙规则:sudo firewall-cmd --permanent --add-port=16514/tcp sudo firewall-cmd --reload如果使用的是 iptables,可以在 /etc/sysconfig/network-scripts/ifcfg-eth0 文件中添加“ROUTE”和“DEFROUTE”行,例如:sudo echo 'ROUTE=default' >> /etc/sysconfig/network-scripts/ifcfg-eth0 sudo echo 'DEFROUTE=yes' >> /etc/sysconfig/network-scripts/ifcfg-eth0安装 virt-manager 并启动 virt-manager:virt-manager 是一个用于管理 KVM 虚拟机的图形界面工具。可以通过以下命令安装它,然后启动和配置:sudo yum install -y virt-manager打开 virt-manager,登录并检查 KVM 虚拟机是否可以正常运行。2.Ubuntu系列
2024年05月20日
87 阅读
0 评论
0 点赞
2024-04-22
Docker 拉取镜像报错 “missing signature key” 解决办法
docker 缺少签名密钥<font color=red>问题:[root@web ~]# docker pull nginx Using default tag: latest Trying to pull repository docker.io/library/nginx ... missing signature key提示:缺少签名密钥<font color=bleen>解决方法1.在其他设备上运行查看是否可以垃取;2.查看docker的版本[root@web ~]# docker version Client: Version: 1.13.1 API version: 1.26 Package version: docker-1.13.1-210.git7d71120.el7.centos.x86_64 Go version: go1.10.3 Git commit: 7d71120/1.13.1 Built: Wed Mar 20 16:04:34 2024 OS/Arch: linux/amd64 Server: Version: 1.13.1 API version: 1.26 (minimum version 1.12) Package version: docker-1.13.1-210.git7d71120.el7.centos.x86_64 Go version: go1.10.3 Git commit: 7d71120/1.13.1 Built: Wed Mar 20 16:04:34 2024 OS/Arch: linux/amd64 Experimental: false3.移除dockersudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine4.更新docker[root@web ~]# sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin5.查看更新之后的版本[root@web ~]# docker version Client: Docker Engine - Community Version: 26.0.2 API version: 1.45 Go version: go1.21.9 Git commit: 3c863ff Built: Thu Apr 18 16:30:00 2024 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 26.0.2 API version: 1.45 (minimum version 1.24) Go version: go1.21.9 Git commit: 7cef0d9 Built: Thu Apr 18 16:28:58 2024 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.31 GitCommit: e377cd56a71523140ca6ae87e30244719194a521 runc: Version: 1.1.12 GitCommit: v1.1.12-0-g51d5e94 docker-init: Version: 0.19.0 GitCommit: de40ad06.再次垃取镜像测试[root@web ~]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx 13808c22b207: Downloading [> ] 294.9kB/29.13MB c46d32988911: Downloading [> ] 426kB/41.79MB b9d060e68bbc: Download complete c028eb95b065: Download complete e74ab6743f66: Pulling fs layer 4a666f159bd0: Waiting 297a65ba6f04: Waiting可以垃取了,原因就是应用docker的版本低的原因
2024年04月22日
1,526 阅读
0 评论
1 点赞
2024-04-13
用户管理
1. 创建用户在Linux系统中,redhat系列 命令: useradd 描述:创建新用户或更新默认的新用户信息语法: useradd [options] user_name选项:-d, --home-dir HOME_DIR home directory of the new account -u, --uid UID user ID of the new account -m, --create-home create the user's home directory -s, --shell SHELL login shell of the new account -M, --no-create-home 不创建家目录Example 1: 创建一个新的普通用户[root@localhost ~]# useradd dev检查用户是否创建成功[root@localhost ~]# id dev uid=1000(dev) gid=1000(dev) groups=1000(dev) uid: user ID #用户ID gid:group ID #组ID groups: #组名称Example 2: 给用户创建密码命令: passwd[root@localhost ~]# passwd dev Changing password for user dev. New password: #输入一次密码 BAD PASSWORD: The password is shorter than 8 characters #不满足密码的要求 Retype new password: #确认密码 passwd: all authentication tokens updated successfully.Example 3: 使用普通用户登录系统[root@web ~]# ssh
[email protected]
4: 创建新用户的时候且指定家目录[root@localhost ~]# useradd dev03 -d /opt/dev03验证结果:Example 5: 创建用户时指定uid 用户ID [root@localhost ~]# useradd dev04 -u 1100 [root@localhost ~]# id dev04 uid=1100(dev04) gid=1100(dev04) groups=1100(dev04)Example 6: 创建伪用户,不能登录shell 环境[root@localhost ~]# useradd dev05 -s /sbin/nologin [root@localhost ~]# id dev05 uid=1101(dev05) gid=1101(dev05) groups=1101(dev05) [root@localhost ~]# ls /home/ dev dev01 dev04 dev05 #测试 显示用户无法登录系统 [root@localhost ~]# su - dev05 This account is currently not available. # 创建用户时,指定不能登录shell环境,且不创建家目录 [root@localhost ~]# useradd dev06 -M -s /sbin/nologin #验证是否创建家目录 [root@localhost ~]# ls /home/ dev dev01 dev04 dev05 [root@localhost ~]# 在debin (ubuntu)系列中命令: adduser2. 删除用户命令:userdel语法:userdel [options] [user_name]example 1: 删除用户[root@localhost ~]# userdel dev06 [root@localhost ~]# id dev06 id: 'dev06': no such user [root@localhost ~]# id dev05 uid=1101(dev05) gid=1101(dev05) groups=1101(dev05) [root@localhost ~]# userdel dev05 [root@localhost ~]# id dev05 id: 'dev05': no such userexample 2: 删除用户的所有文件[root@localhost ~]# userdel -r dev05 [root@localhost ~]# ls /home/ dev dev01 dev04修改用户命令:usermod语法:usermod [options] [user_name]Example 1: 修改用户的uid[root@localhost ~]# useradd dev01 [root@localhost ~]# id dev01 uid=1000(dev01) gid=1000(dev01) groups=1000(dev01) [root@localhost ~]# [root@localhost ~]# usermod -u 1001 dev01 [root@localhost ~]# id dev01 uid=1001(dev01) gid=1000(dev01) groups=1000(dev01)Example 2: 修改用户的家目录[root@localhost ~]# mkdir /opt/dev01 [root@localhost ~]# usermod -d /opt/dev01 dev01 测试: [root@localhost ~]# su - dev01 Last login: Sat Apr 13 16:36:49 CST 2024 on pts/0 [dev01@localhost ~]$ pwd /opt/dev01 关于用户的主配置文件/etc/passwd # 用户的主配置文件/etc/shadow # 用户的密码文件主配置文件[root@localhost ~]# cat /etc/passwd |grep dev tss:x:59:59:Account used for TPM access:/dev/null:/sbin/nologin dev01:x:1001:1000::/opt/dev01:/bin/bash dev03:x:1100:1100::/opt/dev03:/sbin/nologin 以冒号(:)作为分隔符 dev03:x:1100:1100::/opt/dev03:/sbin/nologin 第一个字段 #用户名 第二个字段 #密码占位符 第三个字段 #用户的ID 第四个字段 #用户组ID 第五个字段 #描述信息 第六个字段 #用户的家目录 第七个字段 #用户是否可以登录shell环境 用户的密码文件[root@localhost ~]# cat /etc/shadow root:$1$ruWCBuGb$dP9mCNiYN1mUuhiKZYo1b.::0:99999:7::: dev03:$6$NYLpnJrtz7T0o0A0$OvJkT3iQEalo0yl2Ht4HZse22:19826:0:99999:7::: 以冒号(:)作为分隔符 第一个字段 #用户名 第二个字段 #用户的密码 第三个字段 #最后修改时间 第四个字段 #最小间隔时间 第五个字段 #最大间隔时间 第六个字段 #警告时间 第七、八个字段 #保留字段切换用户命令:su语法: su [options][username]Example 1 切换用户当不切换所在的位置 - #切换用户的时候,连目录一起切换(系统环境) root@localhost ~]# su - dev04 [dev04@localhost ~]$ pwd /home/dev04
2024年04月13日
70 阅读
0 评论
0 点赞
2024-04-11
如何在CentOS 7中升级Linux内核
介绍Linux内核是所有Linux发行版运行的基础。它是开源软件-任何人都可以反编译、检查和修改代码。内核的更新版本可以提高安全性,增加功能,并提高操作系统的运行速度。本指南将指导您如何在CentOS 7上升级Linux内核。 先决条件CentOS服务器访问命令行/终端访问Sudo特权您系统的最新备份更新CentOS内核版本的步骤yum软件包管理器允许内核更新。然而,CentOS没有在官方存储库中提供最新的内核版本。要更新CentOS上的内核,您需要安装一个名为ElRepo的第三方存储库。ElRepo提供来自kernel.org的最新内核版本。官方版本经过测试,以确保它们正常工作,并且不会破坏应用程序和操作系统功能的稳定性。有两种类型的Linux内核版本:稳定的长期支持内核版本-更新频率较低,但支持时间更长。主线内核发布-支持期限较短,但更新更频繁。步骤1:检查您当前的内核版本要在CentOS上检查当前内核版本,请打开命令行界面并输入以下命令: [root@web ~]# uname -msr系统应该返回一个如下所示的条目:Linux 3.10.0-862.el7.x86-64 x86-64输出指示您当前运行的内核版本,以及它基于哪种架构。 第2步:更新CentOS存储库在升级内核之前,所有软件包都必须更新到最新版本。要更新CentOS软件存储库,请使用以下命令:[root@web ~]# yum -y update步骤3:启用ELRepo存储库要安装新的内核版本,需要启用一个新的存储库(ELRepo存储库)。在终端窗口中,键入:导入ELRepo存储库安装GPG密钥。这很重要-CentOS不允许安装未签名的软件包。GPG密钥提供数字签名,以验证软件是否真实。[root@web ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org安装elrepo库[root@web ~]# rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm安装完成输出:第4步:列出可用内核要列出可用的内核,请输入:[root@web ~]# yum list available --disablerepo='*' --enablerepo=elrepo-kernel系统应返回可用模块的列表。在列表中,注意一行说kernel-lt——表示稳定的长期支持版本——或kernel-ml——表示主线版本,支持期限较短,但更新更频繁。[root@web ~]# yum list available --disablerepo='*' --enablerepo=elrepo-kernel 已加载插件:fastestmirror, langpacks, product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager to register. Loading mirror speeds from cached hostfile * elrepo-kernel: mirrors.tuna.tsinghua.edu.cn elrepo-kernel | 3.0 kB 00:00:00 elrepo-kernel/primary_db | 2.1 MB 00:00:05 可安装的软件包 elrepo-release.noarch 7.0-6.el7.elrepo elrepo-kernel kernel-lt.x86_64 5.4.267-1.el7.elrepo elrepo-kernel kernel-lt-devel.x86_64 5.4.267-1.el7.elrepo elrepo-kernel kernel-lt-doc.noarch 5.4.267-1.el7.elrepo elrepo-kernel kernel-lt-headers.x86_64 5.4.267-1.el7.elrepo elrepo-kernel kernel-lt-tools.x86_64 5.4.267-1.el7.elrepo elrepo-kernel kernel-lt-tools-libs.x86_64 5.4.267-1.el7.elrepo elrepo-kernel kernel-lt-tools-libs-devel.x86_64 5.4.267-1.el7.elrepo elrepo-kernel kernel-ml.x86_64 6.7.1-1.el7.elrepo elrepo-kernel kernel-ml-devel.x86_64 6.7.1-1.el7.elrepo elrepo-kernel kernel-ml-doc.noarch 6.7.1-1.el7.elrepo elrepo-kernel kernel-ml-headers.x86_64 6.7.1-1.el7.elrepo elrepo-kernel kernel-ml-tools.x86_64 6.7.1-1.el7.elrepo elrepo-kernel kernel-ml-tools-libs.x86_64 6.7.1-1.el7.elrepo elrepo-kernel kernel-ml-tools-libs-devel.x86_64 6.7.1-1.el7.elrepo elrepo-kernel perf.x86_64 5.4.267-1.el7.elrepo elrepo-kernel python-perf.x86_64 5.4.267-1.el7.elrepo elrepo-kernel 第5步:安装新的CentOS内核版本要安装最新的主线内核[root@web ~]# yum --enablerepo=elrepo-kernel install kernel-ml第6步:查看可用版本[root@web ~]# cat /boot/grub2/grub.cfg | grep 'menuentry ' menuentry 'CentOS Linux (6.7.1-1.el7.elrepo.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-6.7.1-1.el7.elrepo.x86_64-advanced-91451a1f-7d40-48f9-8c65-a8a9d93dfaca' { menuentry 'CentOS Linux (3.10.0-1160.114.2.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1160.114.2.el7.x86_64-advanced-91451a1f-7d40-48f9-8c65-a8a9d93dfaca' { menuentry 'CentOS Linux (3.10.0-1160.95.1.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1160.95.1.el7.x86_64-advanced-91451a1f-7d40-48f9-8c65-a8a9d93dfaca' { menuentry 'CentOS Linux (3.10.0-1160.92.1.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1160.92.1.el7.x86_64-advanced-91451a1f-7d40-48f9-8c65-a8a9d93dfaca' { menuentry 'CentOS Linux (3.10.0-1160.71.1.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-1160.71.1.el7.x86_64-advanced-91451a1f-7d40-48f9-8c65-a8a9d93dfaca' { menuentry 'CentOS Linux (0-rescue-e57ef32020fa406d9bbee213aba339ed) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-e57ef32020fa406d9bbee213aba339ed-advanced-91451a1f-7d40-48f9-8c65-a8a9d93dfaca' {第7步:设置新内核为默认启动修改启动内核两种方法:第一种:修改grub引导到配置文件一旦您确认新内核兼容并正常工作,您将需要编辑GRUB引导实用程序,以便默认情况下,它会加载您的新内核。导航到/etc/default/,然后使用文本编辑器打开grub文件。或者,在终端中键入以下内容:sudo vim /etc/default/grub文件打开后,查找显示GRUB_DEFAULT=X的行,并将其更改为GRUB_DEFAULT=0(零)。此行将指示引导加载程序默认为列表中的第一个内核,这是最新的。保存文件,然后在终端中键入以下命令以重新创建内核配置:sudo grub2-mkconfig -o /boot/grub2/grub.cfg第二种:直接通过命令修改grub2-set-default 'CentOS Linux (6.7.1-1.el7.elrepo.x86_64) 7 (Core)'第8步: 查看设置的内核版本[root@web ~]# grub2-editenv list saved_entry=CentOS Linux (6.7.1-1.el7.elrepo.x86_64) 7 (Core)第9步:重启服务reboot验证默认情况下,引导加载程序是否设置为加载最新的内核。
2024年04月11日
616 阅读
0 评论
2 点赞
2024-04-05
nurses 磁盘使用
ncdu 命令概述ncdu(NCurses Disk Usage)是著名的 "du "的curses版本,可快速查看哪些目录正在占用磁盘空间。语法:ncdu <options> <directory>选项-h,--help此帮助信息 -q静音模式,刷新间隔为 2 秒 -v,-V,--版本 打印版本 -x 相同的文件系统 -启用扩展信息 -r 只读 -o FILE 将扫描目录导出到 FILE -从 FILE 导入扫描目录 -0,-1,-2扫描时使用的 UI(0=无,2=全 ncurses) --si 使用进制 10 (SI) 前缀,而不是进制 2 --exclude PATTERN 排除与 PATTERN 匹配的文件 -X, --exclude-from FILE 排除与 FILE 中任何模式匹配的文件 -L, --follow-symlinks 遵循符号链接(不包括目录) --exclude-caches 排除包含 CACHEDIR.TAG 的目录 --exclude-kernfs 排除 Linux 伪文件系统(procfs、sysfs、cgroup...) --confirm-quit 确认退出 ncdu --color SCHEME 设置颜色方案(off/dark/dark-bg)示例ubuntucom:~$ ncdu /
2024年04月05日
87 阅读
0 评论
0 点赞
2024-04-02
Ubuntu 系统LVM 磁盘扩容
问题 系统磁盘总容量500G,在安装ubuntu系统选择使用LVM作为分区,所以导致现在系统磁盘不够使用排查:查看卷组:查看逻辑卷:ubuntu系统默认不会把所有的存储空间划分给系统,以保证系统安全性,所以保留了一些存储空间,解决方案:从卷组里划分出一些空间给逻辑卷扩容y36@y36-server-ubuntucom:~$ sudo lvextend -L +100G /dev/ubuntu-vg/ubuntu-lv Size of logical volume ubuntu-vg/ubuntu-lv changed from 100.00 GiB (25600 extents) to 200.00 GiB (51200 extents). Logical volume ubuntu-vg/ubuntu-lv successfully resized.刷新逻辑卷y36@y36-server-ubuntucom:~$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv resize2fs 1.47.0 (5-Feb-2023) Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required old_desc_blocks = 13, new_desc_blocks = 25 The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 52428800 (4k) blocks long.查看系统磁盘空间y36@y36-server-ubuntucom:~$ df -h Filesystem Size Used Avail Use% Mounted on tmpfs 3.2G 1.9M 3.2G 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 197G 81G 108G 43% / tmpfs 16G 0 16G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 16G 0 16G 0% /run/qemu /dev/sda1 2.0G 243M 1.6G 14% /boot tmpfs 3.2G 4.0K 3.2G 1% /run/user/1000
2024年04月02日
179 阅读
0 评论
0 点赞
2024-03-28
使用shell脚本创建KVM虚拟机
[root@web ~]# cat install_vm.sh #!/bin/bash # 定义虚拟机名称、磁盘路径、操作系统镜像和Kickstart文件路径 read -p "请输入虚拟机的名称:" VM_NAME #VM_NAME="myvm" VM_DISK_PATH="/home/xuni/${VM_NAME}.qcow2" #read -p "请输入您安装系统镜像的位置:" ISO_IMAGE ISO_IMAGE="/home/ISO/rhel-8.8-x86_64-dvd(1).iso" KICKSTART_FILE="/root/ks.cfg" #read -p "请指定KS文件位置" KICKSTART_FILE # 创建虚拟机磁盘 qemu-img create -f qcow2 "${VM_DISK_PATH}" 40G # 使用virt-install启动虚拟机安装过程 virt-install \ --name "${VM_NAME}" \ --memory 4089 \ --vcpus 2 \ --disk path="${VM_DISK_PATH}",format=qcow2 \ --os-type=linux \ --cdrom "${ISO_IMAGE}" \ --network network=default \ #--initrd-inject="${KICKSTART_FILE}" --extra-args "ks=file://${KICKSTART_FILE}" # 等待虚拟机安装完成 echo "等待安装完成..." while ! virsh list --all | grep -q "${VM_NAME}"; do sleep 5 done # 获取虚拟机的IP地址 VM_IP=$(virsh domifaddr "${VM_NAME}" | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b") echo "虚拟机 ${VM_NAME} 的IP地址为:${VM_IP}" echo "完成安装!"
2024年03月28日
128 阅读
0 评论
0 点赞
2024-03-28
shell-script 创建密钥认证
[root@web ~]# cat ssh-copy-id.sh #!/bin/bash # 设置远程服务器的用户名列表和对应的IP地址列表 USERS=("user1" "user2" "user3") # 替换为你的用户名列表 SERVERS=("192.168.212.141" "192.168.212.142" "192.168.212.143") # 替换为你的服务器IP地址列表 PASSWORD="your_password" # 替换为你的远程服务器密码 PUBLIC_KEY_FILE="$HOME/.ssh/id_rsa.pub" # 公钥文件路径 # 检查公钥文件是否存在 if [ ! -f "$PUBLIC_KEY_FILE" ]; then echo "公钥文件不存在,请确认路径是否正确或者生成新的SSH密钥对。" exit 1 fi # 循环遍历远程服务器列表,并推送公钥 for ((i = 0; i < ${#SERVERS[@]}; i++)); do REMOTE_SERVER="${USERS[$i]}@${SERVERS[$i]}" # 向远程服务器传输公钥内容 echo "正在将公钥推送到远程服务器 $REMOTE_SERVER ..." sshpass -p "$PASSWORD" ssh-copy-id -o StrictHostKeyChecking=no -i "$PUBLIC_KEY_FILE" "$REMOTE_SERVER" if [ $? -eq 0 ]; then echo "公钥已成功推送到远程服务器 $REMOTE_SERVER。" else echo "无法将公钥推送到远程服务器 $REMOTE_SERVER,请检查权限和SSH配置。" fi done
2024年03月28日
69 阅读
0 评论
0 点赞
2024-03-28
shell 脚本批量创建免密登录
#!/bin/bash ipadd="192.168.212" read -p "请输入密码" passwd ssh_copy(){ for i in 141 142 143 do echo "正在连接$ipadd.$i" sshpass -p "$passwd" ssh-copy-id $ipadd.$i -o StrictHostKeyChecking=no done } if [ -f /usr/bin/sshpass ];then ssh_copy else yum -y install sshpass ssh_copy fi
2024年03月28日
45 阅读
0 评论
1 点赞
2024-03-28
shell 脚本安全审计
[root@web ~]# cat security.sh #!/bin/bash # 安全审计和漏洞扫描脚本 # 设置输出文件 output_file="security_scan_report.txt" # 执行系统信息收集 echo "收集系统信息..." > $output_file date >> $output_file echo "---------------------------" >> $output_file uname -a >> $output_file df -h >> $output_file echo "" >> $output_file for ip in {1..254} do ping -c 3 192.168.218.$ip if [ $? -eq 0 ]; then # 执行漏洞扫描 echo "执行漏洞扫描..." >> $output_file echo "---------------------------" >> $output_file # 在这里使用适合你的漏洞扫描工具,例如:Nmap、OpenVAS、Nessus等 nmap -p 1-65535 -T4 -A -v 192.168.218.$ip >> $output_file echo "" >> $output_file # 执行安全审计 echo "执行安全审计..." >> $output_file echo "---------------------------" >> $output_file # 在这里使用适合你的审计工具,例如 Lynis 或其他自定义脚本 yum -y install lynis > /dev/null lynis audit system >> $output_file echo "" >> $output_file else echo 192.168.218.$ip down fi done # 结束脚本 echo "安全审计和漏洞扫描已完成。报告保存在 $output_file。"
2024年03月28日
77 阅读
0 评论
0 点赞
2024-03-28
Docker 常用命令
Docker 常用命令Docker 镜像相关命令:docker images:列出本地主机上的 Docker 镜像。docker pull <镜像名>:从 Docker 镜像仓库中拉取指定的镜像。docker push <镜像名>:将本地的镜像推送到 Docker 镜像仓库。docker build -t <镜像名> <Dockerfile路径>:根据 Dockerfile 构建镜像。Docker 容器相关命令:docker run <镜像名>:根据镜像创建并启动一个容器。docker ps:列出正在运行的容器。docker stop <容器ID>:停止指定的容器。docker rm <容器ID>:删除指定的容器。docker exec <容器ID> <命令>:在正在运行的容器内执行命令。Docker 网络相关命令:docker network ls:列出所有的 Docker 网络。docker network create <网络名>:创建一个新的 Docker 网络。docker network connect <网络名> <容器ID>:将容器连接到指定的网络。docker network disconnect <网络名> <容器ID>:将容器从指定的网络断开。Docker 数据管理命令:docker volume ls:列出所有的 Docker 卷。docker volume create <卷名>:创建一个新的 Docker 卷。docker volume inspect <卷名>:查看指定 Docker 卷的详细信息。docker volume rm <卷名>:删除指定的 Docker 卷。Docker Compose 相关命令:docker-compose up:根据 Docker Compose 文件启动应用程序。docker-compose down:停止并删除由 Docker Compose 启动的应用程序。docker-compose ps:列出 Docker Compose 中的容器状态。Docker 日志相关命令:docker logs <容器ID>:查看容器的日志输出。docker logs -f <容器ID>:实时跟踪容器的日志输出。docker logs --tail <行数> <容器ID>:仅显示容器日志的指定行数。Docker Swarm 相关命令:docker swarm init:初始化 Docker Swarm 模式,并创建一个 Swarm 管理节点。docker swarm join:将节点加入 Docker Swarm 集群。docker node ls:列出 Docker Swarm 集群中的节点。docker service create:在 Swarm 集群中创建一个服务。docker service scale:调整 Swarm 服务的副本数量。Docker 安全相关命令:docker scan <镜像名>:扫描 Docker 镜像的安全漏洞。docker container run --cap-drop <能力>:限制容器的特权能力。docker container run --read-only:以只读模式运行容器。docker container run --user <用户>:指定容器运行时的用户。Docker 清理命令:docker system prune:清理未使用的镜像、容器和卷。docker image prune:清理未使用的镜像。docker container prune:清理未运行的容器。docker volume prune:清理未使用的卷。Docker 镜像仓库相关命令:docker login:登录到 Docker 镜像仓库。docker logout:注销当前登录的 Docker 镜像仓库。docker search <关键词>:在 Docker 镜像仓库中搜索镜像。docker tag <镜像名>:<标签> <新的镜像名>:<新的标签>:给镜像添加标签或重命名镜像。docker rmi <镜像名>:删除本地主机上的指定镜像。Docker 资源限制和监控命令:docker run --cpu-shares <权重>:设置容器的 CPU 资源权重。docker run --memory <内存限制>:限制容器可使用的内存大小。docker stats <容器ID>:实时显示容器的资源使用情况。docker top <容器ID>:查看容器内运行的进程信息。Docker Swarm Stack 相关命令:docker stack deploy -c <compose文件> <堆栈名称>:部署一个 Docker Swarm Stack。docker stack ls:列出当前 Swarm 集群中的堆栈。docker stack services <堆栈名称>:列出指定堆栈的服务。docker stack ps <堆栈名称>:列出指定堆栈的任务状态。Docker 调试和故障排查命令:docker logs <容器ID>:查看容器的日志输出。docker inspect <容器ID>:查看容器的详细信息,包括网络和存储配置。docker exec -it <容器ID> <命令>:在运行中的容器内执行交互式命令。docker attach <容器ID>:附加到正在运行的容器的标准输入、输出和错误流。
2024年03月28日
100 阅读
0 评论
1 点赞
2024-03-28
k8s 常用命令
kubernetes 常用命令以下是一些常用的Kubernetes命令:查看集群信息和节点状态:kubectl cluster-info:查看集群信息。kubectl get nodes:查看所有节点的状态。查看和管理资源:kubectl get pods:查看所有Pod的状态。kubectl get deployments:查看所有部署的状态。kubectl get services:查看所有服务的状态。kubectl get namespaces:查看所有命名空间的状态。kubectl describe <resource_type> <resource_name>:查看特定资源的详细信息。kubectl delete <resource_type> <resource_name>:删除特定资源。创建和管理资源:kubectl create -f <yaml_file>:使用YAML文件创建资源。kubectl apply -f <yaml_file>:使用YAML文件创建或更新资源。kubectl expose <resource_type> <resource_name> --port=<port>:将服务暴露到集群内部。kubectl scale <resource_type> <resource_name> --replicas=<count>:调整副本数。进入Pod和容器:kubectl exec -it <pod_name> --container=<container_name> -- /bin/bash:进入特定Pod的容器。kubectl logs <pod_name>:查看特定Pod的日志。调试和故障排查:kubectl describe pod <pod_name>:查看Pod的详细信息,包括事件和状态。kubectl logs <pod_name> -c <container_name>:查看特定容器的日志。kubectl get events:查看集群中的事件。kubectl rollout status <deployment_name>:查看部署的滚动更新状态。调试和故障排查:kubectl describe <resource_type> <resource_name>:查看特定资源的详细信息,如Pod、Deployment等。kubectl logs <pod_name> -c <container_name>:查看特定容器的日志。kubectl get events:查看集群中的事件。kubectl rollout status <deployment_name>:查看部署的滚动更新状态。端口转发和代理:kubectl port-forward <pod_name> <local_port>:<pod_port>:将本地端口与Pod的端口进行转发,用于访问Pod内部服务。kubectl proxy:在本地启动一个代理,使您可以通过API访问集群中的服务。配置管理:kubectl create configmap <configmap_name> --from-file=<path_to_file>:从文件创建ConfigMap。kubectl create secret generic <secret_name> --from-literal=<key>=<value>:从字面值创建Secret。kubectl edit <resource_type> <resource_name>:编辑特定资源的配置。扩展和自动化:kubectl autoscale <deployment_name> --min=<min_replicas> --max=<max_replicas> --cpu-percent=<cpu_percentage>:为Deployment创建自动扩展配置。kubectl apply -f <manifest_file> --prune:使用YAML文件进行部署,并自动删除已不存在的资源。描述和验证资源配置:kubectl explain <resource_type>:查看特定资源类型的详细说明。kubectl apply -f <manifest_file> --dry-run=client:验证YAML文件的语法和资源配置是否正确。状态查询和监控:kubectl top <resource_type>:查看特定资源的资源使用情况,如kubectl top pods查看Pod的资源使用情况。kubectl get pods --watch:持续监视Pod的状态变化。kubectl get pods -o wide:显示更详细的Pod信息,包括节点和IP地址。调度和节点管理:kubectl drain <node_name>:从节点上驱逐Pod,并将它们迁移到其他节点。kubectl cordon <node_name>:标记节点为不可调度状态,阻止新的Pod被调度到该节点。kubectl uncordon <node_name>:取消节点的不可调度状态。部署和滚动更新:kubectl apply -f <manifest_file>:使用YAML文件创建或更新资源,如果资源已存在,则更新。kubectl rollout history <resource_type> <resource_name>:查看特定资源的部署历史。kubectl rollout undo <resource_type> <resource_name>:回滚部署到先前的版本。认证和授权:kubectl config get-contexts:查看Kubernetes集群的上下文配置。kubectl config use-context <context_name>:切换到指定的上下文配置。kubectl auth can-i <verb> <resource_type>:检查当前用户是否具有执行特定操作的权限。清理和删除资源:kubectl delete <resource_type> <resource_name>:删除特定的资源。kubectl delete namespace <namespace_name>:删除命名空间及其所有的资源。kubectl delete pods --all:删除所有的Pod。安全管理:kubectl create role <role_name> --verb=<verb> --resource=<resource_type> --namespace=<namespace>:创建角色。kubectl create rolebinding <rolebinding_name> --role=<role_name> --user=<user> --namespace=<namespace>:创建角色绑定。kubectl create serviceaccount <serviceaccount_name> --namespace=<namespace>:创建服务账号。kubectl create clusterrole <clusterrole_name> --verb=<verb> --resource=<resource_type>:创建集群角色。kubectl create clusterrolebinding <clusterrolebinding_name> --clusterrole=<clusterrole_name> --user=<user>:创建集群角色绑定。日志和调试:kubectl logs <pod_name> -f:实时查看Pod的日志。kubectl port-forward <pod_name> <local_port>:<pod_port>:将本地端口与Pod的端口进行转发。kubectl attach <pod_name> -c <container_name>:将终端附加到运行中的容器。集群管理和扩展:kubectl get componentstatuses:查看集群组件的状态。kubectl get cs:查看集群组件的状态(简写)。kubectl scale deployment <deployment_name> --replicas=<replica_count>:调整部署的副本数。kubectl scale statefulset <statefulset_name> --replicas=<replica_count>:调整StatefulSet的副本数。插件和扩展:kubectl krew install:安装Krew插件管理器。kubectl krew search:搜索可用的Krew插件。kubectl plugin <plugin_name>:运行特定的Kubectl插件。版本和更新:kubectl version:查看Kubernetes客户端和服务器版本信息。kubectl get nodes --show-labels:查看节点的标签信息。运行和管理作业(Job):kubectl create job <job_name> --image=<image_name>:创建一个作业。kubectl get jobs:查看所有作业的状态。kubectl delete job <job_name>:删除一个作业。运行和管理批处理任务(CronJob):kubectl create cronjob <cronjob_name> --image=<image_name> --schedule=<cron_expression>:创建一个定时任务。kubectl get cronjobs:查看所有定时任务的状态。kubectl delete cronjob <cronjob_name>:删除一个定时任务。运行和管理DaemonSet:kubectl create daemonset <daemonset_name> --image=<image_name>:创建一个DaemonSet。kubectl get daemonsets:查看所有DaemonSet的状态。kubectl delete daemonset <daemonset_name>:删除一个DaemonSet。网络和服务发现:kubectl get services:查看所有服务的状态。kubectl expose deployment <deployment_name> --port=<port> --target-port=<target_port>:将部署暴露为服务。kubectl get ingress:查看所有Ingress的状态。状态检查和健康检查:kubectl get pods --field-selector=status.phase=<phase>:根据状态检索Pod。kubectl get pods --selector=<label_selector>:根据标签选择器检索Pod。kubectl describe pod <pod_name>:查看Pod的详细信息,包括事件和状态。故障排查和日志分析:kubectl logs <pod_name>:查看Pod的日志。kubectl describe <resource_type> <resource_name>:查看特定资源的详细信息,如Pod、Deployment等。kubectl exec -it <pod_name> -- /bin/bash:在Pod内部执行交互式Shell命令。状态和监控:kubectl top <resource_type>:查看特定资源的资源使用情况,如kubectl top pods查看Pod的资源使用情况。kubectl describe <resource_type> <resource_name>:查看特定资源的详细信息,如Pod、Deployment等。kubectl get events:查看集群中的事件。kubectl get metrics:查看集群的度量指标。存储和卷管理:kubectl get storageclasses:查看所有存储类的状态。kubectl get pv:查看所有持久卷的状态。kubectl get pvc:查看所有持久卷声明的状态。kubectl create pvc <pvc_name> --volume=<volume_name>:创建持久卷声明。调度和亲和性:kubectl describe nodes:查看节点的详细信息,包括标签和亲和性设置。kubectl taint nodes <node_name> <taint_key>=<taint_value>:<taint_effect>:为节点添加污点。kubectl label nodes <node_name> <label_key>=<label_value>:为节点添加标签。安全和权限:kubectl create role <role_name> --verb=<verb> --resource=<resource_type> --namespace=<namespace>:创建角色。kubectl create rolebinding <rolebinding_name> --role=<role_name> --user=<user> --namespace=<namespace>:创建角色绑定。kubectl create clusterrole <clusterrole_name> --verb=<verb> --resource=<resource_type>:创建集群角色。kubectl create clusterrolebinding <clusterrolebinding_name> --clusterrole=<clusterrole_name> --user=<user>:创建集群角色绑定。配置管理:kubectl create configmap <configmap_name> --from-file=<path_to_file>:从文件创建ConfigMap。kubectl create secret generic <secret_name> --from-literal=<key>=<value>:从字面值创建Secret。kubectl edit <resource_type> <resource_name>:编辑特定资源的配置。kubectl get configmaps:查看所有ConfigMap的状态。kubectl get secrets:查看所有Secret的状态。扩展和自动化:kubectl autoscale <deployment_name> --min=<min_replicas> --max=<max_replicas> --cpu-percent=<cpu_percentage>:为Deployment创建自动扩展配置。kubectl apply -f <manifest_file> --prune:使用YAML文件进行部署,并自动删除已不存在的资源。kubectl apply -f <manifest_file> --validate:使用YAML文件进行部署,并验证配置的正确性。kubectl apply -f <manifest_file> --dry-run=client:验证YAML文件的语法和资源配置是否正确。描述和验证资源配置:kubectl explain <resource_type>:查看特定资源类型的详细说明。kubectl apply -f <manifest_file> --dry-run=client:验证YAML文件的语法和资源配置是否正确。kubectl apply -f <manifest_file> --validate:使用YAML文件进行部署,并验证配置的正确性。kubectl diff -f <manifest_file>:比较YAML文件中的配置与当前集群中的配置的差异。清理和删除资源:kubectl delete <resource_type> <resource_name>:删除特定的资源。kubectl delete namespace <namespace_name>:删除命名空间及其所有的资源。kubectl delete pods --all:删除所有的Pod。kubectl delete --all <resource_type>:删除所有的指定资源类型。资源扩展和自定义:kubectl apply -f <custom_resource_definition>:创建自定义资源定义(Custom Resource Definition,CRD)。kubectl get crd:查看所有自定义资源定义的状态。kubectl get <custom_resource>:查看特定自定义资源的状态。网络策略和访问控制:kubectl create networkpolicy <networkpolicy_name> --namespace=<namespace> --from=<source_selector> --to=<destination_selector> --port=<port>:创建网络策略。kubectl get networkpolicies:查看所有网络策略的状态。执行和管理任务:kubectl create job <job_name> --image=<image_name>:创建一个作业。kubectl get jobs:查看所有作业的状态。kubectl delete job <job_name>:删除一个作业。集群信息和调试:kubectl cluster-info:查看集群信息。kubectl describe node <node_name>:查看特定节点的详细信息。kubectl describe pod <pod_name>:查看特定Pod的详细信息。kubectl describe service <service_name>:查看特定服务的详细信息。水平扩展和自动伸缩:kubectl scale deployment <deployment_name> --replicas=<replica_count>:调整部署的副本数。kubectl scale statefulset <statefulset_name> --replicas=<replica_count>:调整StatefulSet的副本数。kubectl autoscale deployment <deployment_name> --min=<min_replicas> --max=<max_replicas> --cpu-percent=<cpu_percentage>:为Deployment创建自动扩展配置。备份和恢复:kubectl get pv:查看所有持久卷的状态。kubectl get pvc:查看所有持久卷声明的状态。kubectl get snapshot:查看所有快照的状态。
2024年03月28日
235 阅读
0 评论
0 点赞
1
2
3