1+x高级考试

一、单选题(共20题, 共200 分)

1 关千交换机与路由器的区别,正确的是 C

A交换机在网络层

B路由器在路由层

C交换机根据MAC地址寻址

D路由器的转发速度快


2.VLAN的作用是什么正确的是 D

A增加了延迟

B减少了带宽利用率

C降低了安全性

D进行广播控制


3因特网中的 IP 地址由两部分组成,前面一个部分称 D

A.正文

B.帧头

C.主机标识

D.网络标识


4在linux中要想把用户自己设置的别名在任何时候都起到作用,应该添加 A

A.- 1.bashrc

B.- 1.bash_history

C.- 1.bash_profile

D.- 1.bash_parfile



5—个文件的权跟rw-rw-r--,这个文件所有者的权限 C

A.read-only

B.wnte

C.read-wnte

D.read-write-execute


6在大多数Linux发行版本中,以下哪个属于块设备(block devices)B

A.串行口

B.liJ盘

C.虚书儿终端

D.打印机


7运行一个脚本,用户不需要什么权限 B
 
A.read

B.wnte

C.execute

D.browse on the d「i ectory


8关千shell脚本中的函数的说法正确的是 D

A在shell脚本中定义函数时,可以使用 function 关键字,也可以不使用

B函数名后的括号可以省略

C若函数中不使用return关键字设置返回伯,则函数返回其中最后一条命令的执行结果

D以上各选项都正确

 
9使用In命令将生成了—个指向文件old的符号链接new, 如果你将文件old删除,是否还能够访问文件中的数据 A	

A 不可能再访问

B. 仍然可以访问

C能否和可取决千文件的所有者

D能否访可取决千文件的权限


10描述网络协议的三要素是 D

A.编码、控制信息同步

B数据格式、编码、信号电平

C数据格式、控制信息、速度匹配

D语法语义、同步


11那—块组件负责openstack的网络 B

A.Nova

B.Neutron

C.Keystone

D.cinder



12下面哪种镜像格式glance不支持 C

A.raw

B.qcow2

C.ram

D.vhd


13.glance服务为镜像服务,他所存在的镜像都存储在哪个文件夹 C

A.llar/log/images

B.llar/glance/images

C.llar/lib/glance/images

D.llar/lib/images



14下列关于SDN的描述中,正确的有哪项 D

A.SDN的核心是控制与转发分离

B在SDN构架中,如果业务需求发生变动,就需要重新修改相应网络设备

C在SDN构架中,管理员是无法快速建立逻辑隔离的网络的

D在SDN的构架中,可以不依赖硬件,实现强键的网络架构


15关于DNS被劫持的表现中 ,下列哪项上网体验可以表明目前域名正在被劫持 A

A在浏览器中输入A网址时,打开的是B网站

B上网速度过慢

C只能使用域名上网,无法使用IP地址打开网页

D只可以使用浏览器下载,而不可以使用P2P工具下载


16目前您企业中大部分的业务都运行在Windows Server 2003 SP1操作系统的服务器之上,此类情况您可以使用以下哪项云计算模式 B

A.公有云

B.私有云

C.混合云

D.行业云


17如何进行查看容器的详细信息 C	

A.docker ps

B.docker stats
 
C.docker inspect

D.docker ps -a


18如何进行搜索Nginx镜 C

A.docker find nginx

B.docker se nginx

C.docker search nginx

D.docker nginx search



19.Docker在启动创建或者进行容器时,可以使用哪个参数可以给Docker分配—个伪终端  B

A.-i

B.-t

C.-W
D.-t


20.Kubernetes是哪门语言编写的 C

A.Python

B.Java

C.Go

D.Shell


二、多选题(共20题, 共200 分)

1下列技术中,哪几个是接入网的技术 ABC

A.ADSL

B.HFC

C.FTTX

D.WWW



2计算机网络的主要功能包括 AD

A.连通

B.连接

C.交换

D.共享


3在Internet中, IP路由器应具备的主要功能包括 ABD

A转发所收到的IP数据报

B为投递的IP数据报选择最佳路径

C分析IP数据报所携带的TCP内容

D维护路由表信息


4网络故障管理的功能主要包括 ABD

A维护错误日志

B执行诊断检测

C生成用户账单

D跟踪错误


5关于无线局域网的描述中正确的是 ABCD

A 以无线电波作为传输介质

B.协议标准是IEEE 802.11

C可采用直接序列扩频技术

D可作为有线局域网的补充
 
6. Linux的每类用户拥有三种权限,分别 ABC

A.r

B.w

C.x

D.m

7.在Linux 中,具有相当丰富使用的联机帮助功能 。用户通常可通过下面哪几种方式来获取操作命令的使用方法或参数选项内容 ABCD

A.man 命令

B.whatis 命令

C.info 

D.命令-- help


8.Linux的基本文件类型有哪几种 ABD

A.普通文件

B.目录文件

C.链接文件

D 设备文件度


9.Linux系统必须至少要创建哪些分区 AB

A.根分区(/)

B 交换(swap)分区

C.扩展分区

D.逻辑分区


10 在RHEL6中的图形界面的网络配置中,进行网络配置的主要参数包括 ABC

A.网络IP地址

B.子网掩码

C.网关

D.DNS服务器地址


11.Horizon会和以下哪个模块发生关 ABCD

A.nova

B.Neutron

C.Cinder

D.Swift



12将Openstack部署在公有云坏境中那些技术侧重点需要考虑 ABCD

A.计算资源

B资源的弹性

C部署应用的无状态特性以降低对平台可靠性的依赖

D和各种开源方案集成的能力


13以下属于基础资源层的技术有哪些 AB

A.裸金属

B虚拟化技术

C软件及服务

D.平台及服务


14.VPN 连接是—种通过公网加密通道连接对端IDC 和私有网络的方式,它由那几个部分组成 ABCD

A.对端网关

B.VPN通道
 
C.VPN 网关

D.弹性网卡


15.轮询方式是指负载均衡向后端服务器分配流量的算法,根据不同的轮询方式及后端服务器的权重设置,可以达到不同的效果。腾讯云负载均衡CLB有哪几种策略 ABCD

A加权轮询算法

B加权最小连接数算法

C源地址散列调度算法

D最短晌应时间


16创建云服务器实例时,必须选择归属的私有网络,这样做的好处 ABCD

A实现不同私有网络间的逻辑隔离

B灵活的访问控制规则,支持基于安全组(防火墙)和网络AGL 两种级别的访问控制

C自定义网络划分和路由部署

D腾讯云 VPC 提供灵活、高性能的 Internet 连接方式,包括弹性 IP 、 NAT 网关关


17电商行业的的双 11 、 6.18 等大促销活动 , web 访问最可能瞬间陡增10 倍,且只持续短暂的数小时。可以使用哪些方式最大限度的节省IT 成本 AB

A.负载均衡

B.弹性伸缩

C.CDN 加速

D 天御活动防刷


18关于Docker与传统虚拟机的区别包括 AC

A.Docker容器的启动速度是秒级,而传统虚拟机是分钟级

B.Docker容器在计算能力损耗接近50%, 而传统虚拟机几乎无损耗

C.Docker容器单机可启动上千个,而传统虚拟机仅为几十个

D.Docker容器在隔离性上是完全隔离,而传统虚拟机是采用资源限制涌

19下列关千Docker的描述正确的是 BC

A.Docker tag的命令格式为 Docker tag 新名称[标签]原名称:[标签]

B.既可以使用镜像的名称标签删除镜像,也可以使用镜像的ID删除镜像

C删除镜像时,先要删除依赖该镜像的所有容器,然后删除镜像

D当镜像有多个标签时,删除其中一个标签既可以删除整个镜像


20下面哪些属于Kubernetes的资源对象 ABCD

A.Pod

B.CustomResourceDefinition

C.Service

D.Deployment


# 实操题
1
1、使用openstackallinone节点,使用keystone相关命令创建Gjbs001用户,密码为000000,创建完成后,使用openstack相关命令将该用户的详细信息以文本形式提交到答题框
[root@controller ~]# source /etc/keystone/admin-openrc.sh
[root@controller ~]# openstack user create --domain xiandian --password 000000 Gjbs001




2、使用openstackallinone节点,使用nova相关命令,查看相关服务是否正常运行,将相关命令的结果以文本形式提交到答题框
[root@controller ~]# nova service-list
+--------------------------------------+------------------+------------+----------+---------+-------+----------------------------+-----------------+-------------+
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason | Forced down |
+--------------------------------------+------------------+------------+----------+---------+-------+----------------------------+-----------------+-------------+
| 2563954c-07d0-4263-876e-90db47b0cd71 | nova-consoleauth | controller | internal | enabled | up | 2022-11-11T01:01:54.000000 | - | False |
| 7bbc5f16-9b50-4342-babb-50d33681ee39 | nova-conductor | controller | internal | enabled | up | 2022-11-11T01:01:52.000000 | - | False |
| 892fcfc8-6892-4f9f-be1f-c50f71162e25 | nova-scheduler | controller | internal | enabled | up | 2022-11-11T01:01:56.000000 | - | False |
| 4537eec4-c587-4647-8231-61300aa3cef3 | nova-compute | controller | nova | enabled | up | 2022-11-11T01:01:54.000000 | - | False |
+--------------------------------------+------------------+------------+----------+---------+-------+----------------------------+-----------------+-------------+





3、使用openstackallinone节点,使用glance相关命令提供的cirros-0.3.4-x86_64-disk.img创建镜像,镜像名字为cirros,镜像格式为qcow2,创建完成后查看镜像详细信息,并以文本形式提交到答题框
[root@controller ~]# glance image-create --name cirros --container-format bare --disk-format qcow2 --file cirros-0.3.4-x86_64-disk.img
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | ee1eca47dc88f4879d8a229cc70a07c6 |
| container_format | bare |
| created_at | 2022-11-11T01:03:15Z |
| disk_format | qcow2 |
| id | cbf6e624-7b59-4bf4-a933-4dd54295e19f |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros |
| owner | 085c8e059d074cecb4f216bf66919afe |
| protected | False |
| size | 13287936 |
| status | active |
| tags | [] |
| updated_at | 2022-11-11T01:03:15Z |
| virtual_size | None |
| visibility | shared |
+------------------+--------------------------------------+
[root@controller ~]# glance image-show cbf6e624-7b59-4bf4-a933-4dd54295e19f
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | ee1eca47dc88f4879d8a229cc70a07c6 |
| container_format | bare |
| created_at | 2022-11-11T01:03:15Z |
| disk_format | qcow2 |
| id | cbf6e624-7b59-4bf4-a933-4dd54295e19f |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros |
| owner | 085c8e059d074cecb4f216bf66919afe |
| protected | False |
| size | 13287936 |
| status | active |
| tags | [] |
| updated_at | 2022-11-11T01:03:15Z |
| virtual_size | None |
| visibility | shared |
+------------------+--------------------------------------+







4、使用openstackallinone节点,使用neutron相关命令创建网络net并查看,然后再使用neutron相关命令查看服务是否正常运行,将相关命令结果以文本框形式提交到答题框
[root@controller ~]# neutron net-create net
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Created a new network:
+---------------------------+--------------------------------------+
| Field | Value |
+---------------------------+--------------------------------------+
| admin_state_up | True |
| availability_zone_hints | |
| availability_zones | |
| created_at | 2022-11-11T01:04:13Z |
| description | |
| id | ea1b4be4-cfbb-4c08-a7b4-f340033a65f9 |
| ipv4_address_scope | |
| ipv6_address_scope | |
| is_default | False |
| mtu | 1450 |
| name | net |
| port_security_enabled | True |
| project_id | 085c8e059d074cecb4f216bf66919afe |
| provider:network_type | vxlan |
| provider:physical_network | |
| provider:segmentation_id | 198 |
| revision_number | 2 |
| router:external | False |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
| tenant_id | 085c8e059d074cecb4f216bf66919afe |
| updated_at | 2022-11-11T01:04:14Z |
+---------------------------+--------------------------------------+
[root@controller ~]# neutron agent-list
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
+--------------------------------------+--------------------+----------------------+-------------------+-------+----------------+---------------------------+
| id | agent_type | host | availability_zone | alive | admin_state_up | binary |
+--------------------------------------+--------------------+----------------------+-------------------+-------+----------------+---------------------------+
| 21b82224-bb84-404b-9745-ec8cedd58808 | Linux bridge agent | controller | | :-) | True | neutron-linuxbridge-agent |
| 2a177d51-3694-43db-b4f6-423681afffe9 | DHCP agent | controller | nova | :-) | True | neutron-dhcp-agent |
| 540fa578-a422-4223-bfcb-9113cf27e5b7 | Metadata agent | controller.novalocal | | :-) | True | neutron-metadata-agent |
| f6ae5d66-10fa-44dd-bfde-ec4734aa092f | L3 agent | controller | nova | :-) | True | neutron-l3-agent |
+--------------------------------------+--------------------+----------------------+-------------------+-------+----------------+---------------------------+






5、使用openstackallinone节点,使用rabbitmqctl相关创建用户test,密码为test001,并赋予该用户所有权限,最后查看该用户的权限信息和所有操作命令以文本框形式提交到答题框
[root@controller ~]# rabbitmqctl add_user test test001
Creating user "test"
[root@controller ~]# rabbitmqctl set_permissions test '.*' '.*' '.*'
Setting permissions for user "test" in vhost "/"

[root@controller ~]# rabbitmqctl list_user_permissions test
Listing permissions for user "test"
/ .* .* .*










6、使用xnode1节点,使用vmware给xnode1节点添加一块大小为50G的硬盘。使用fdisk命令对该硬盘进形分区,要求分出三个大小为5G的分区。使用这三个分区,创建名为/dev/md5、raid级别为5的磁盘阵列。创建完成后使用xfs文件系统进形格式化,并挂载到/mnt目录下。将mdadm -D /dev/md5命令和df -h命令返回得结果以文本形式提交到答题框

[root@controller ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
sdb 8:16 0 50G 0 disk
├─sdb1 8:17 0 5G 0 part
├─sdb2 8:18 0 5G 0 part
└─sdb3 8:19 0 5G 0 part 

[root@controller ~]# mdadm -C /dev/md5 -l5 -n3 /dev/sdb{1..3}
mdadm: Fail create md5 when using /sys/module/md_mod/parameters/new_array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

[root@controller ~]# mkfs.xfs /dev/md5
meta-data=/dev/md5 isize=512 agcount=16, agsize=163712 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2618880, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

[root@controller ~]# mount /dev/md5 /mnt/

[root@controller ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Fri Nov 11 01:09:57 2022
Raid Level : raid5
Array Size : 10475520 (9.99 GiB 10.73 GB)
Used Dev Size : 5237760 (5.00 GiB 5.36 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent

Update Time : Fri Nov 11 01:13:39 2022
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 512K

Consistency Policy : resync

Name : controller.novalocal:5 (local to host controller.novalocal)
UUID : ec51f9de:90d3f432:efe343ec:6e73c2a4
Events : 20

Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2
3 8 19 2 active sync /dev/sdb3
[root@controller ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 60G 11G 50G 19% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 17M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/loop1 4.2G 4.2G 0 100% /opt/centos
/dev/loop0 3.6G 3.6G 0 100% /opt/iaas
tmpfs 783M 0 783M 0% /run/user/0
/dev/md5 10G 33M 10G 1% /mnt







7、使用xnode1、xnode2两个节点 完成redis主从的配置,密码配置为000000;使用redis.tar来创建源,配置完成后使用redis-cli -a000000 info 命令的返回结果以文本形式提交到答题框
# xnode1安装redis,并修改配置文件
[root@xnode1 ~]# yum install -y redis
[root@xnode1 ~]# vi /etc/redis.conf
bind 0.0.0.0
protected-mode no
daemonize yes
masterauth "000000"
requirepass "000000"

# xnode2节点
[root@xnode2 ~]# vi /etc/redis.conf
bind 0.0.0.0
protected-mode no
daemonize yes
slaveof 172.16.20.85 6379
masterauth "000000"
requirepass "000000"

# 启动即可
[root@xnode1 ~]# systemctl restart redis
[root@xnode1 ~]# redis-cli -a 000000 info 







8、使用xnode1、xnode2、xnode3三个节点,使用rabbitmq.tar来创建源,配置并完成搭建rabbitmq高可用服务,xnode1机器为主节点(磁盘节点),其他机器作为内存节点加入主节点中,完成后使用rabbitmqctl相关命令查看该集群的状态信息并以文本形式提交到答题框
# 仅供参考,还是以题目为准

[root@rabbitmq1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.20.85 rabbitmq1
172.16.20.57 rabbitmq2
172.16.20.117 rabbitmq3
# 安装rabbitmq
[root@rabbitmq1 ~]# yum install -y rabbitmq-server
[root@rabbitmq1 ~]# systemctl restart rabbitmq-server
[root@rabbitmq1 ~]# scp /var/lib/rabbitmq/.erlang.cookie 172.16.20.57:/var/lib/rabbitmq/.erlang.cookie
[root@rabbitmq1 ~]# systemctl restart rabbitmq-server


[root@rabbitmq2 ~]# rabbitmqctl stop_app
Stopping node rabbit@rabbitmq2 ...
...done.
[root@rabbitmq2 ~]# rabbitmqctl join_cluster rabbit@rabbitmq1 --ram
Clustering node rabbit@rabbitmq2 with rabbit@rabbitmq1 ...
...done.
[root@rabbitmq2 ~]# rabbitmqctl start_app
Starting node rabbit@rabbitmq2 ...
...done.
[root@rabbitmq2 ~]# rabbitmq-plugins enable rabbitmq_management

[root@rabbitmq1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmq1 ...
[{nodes,[{disc,[rabbit@rabbitmq1]},{ram,[rabbit@rabbitmq3,rabbit@rabbitmq2]}]},
{running_nodes,[rabbit@rabbitmq1]},
{cluster_name,<<"rabbit@rabbitmq1">>},
{partitions,[]}]
...done.








9、使用xnode1节点,使用给出软件包进行zabbix服务的安装,部署完成后使用网络相关命令展示zabbix服务端口是否开放,将这些状态信息以文本形式提交到答题框
[root@zabbix-server ~]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 10611/zabbix_server
tcp0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 10510/mysqld
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 975/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 886/master
tcp6 0 0 :::10051 :::* LISTEN 10611/zabbix_server
tcp6 0 0 :::80 :::* LISTEN 10579/httpd
tcp6 0 0 :::21 :::* LISTEN 10015/vsftpd
tcp6 0 0 :::22 :::* LISTEN 975/sshd
tcp6 0 0 ::1:25 :::* LISTEN 886/master









10、使用xnode1、xnode2、xnode3节点,使用给出的MariaDB-server.tar 进行mariadb的高可用部署即Mariadb_Galera_Cluster,并且密码设置123456,配置高可用集群,配置完成后查看主节点的集群状态和端口,将这些信息进行查看并以文本形式提交到答题框
# 每台节点进行此操作
[root@node1 ~]# yum install -y MariaDB-server
[root@node1 ~]# systemctl restart mariadb
[root@node1 ~]# mysqladmin password 123456
[root@node1 ~]# mysql -uroot -p000000
MariaDB [(none)]> grant all privileges on *.* to 'root'@'%' identified by '123456';
[root@node1 ~]# vi /etc/my.cnf.d/server.cnf
[galera]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://172.16.20.28,172.16.20.93,172.16.20.109"
binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2


# 主节点进行启动
[root@node1 ~]# systemctl stop mariadb
[root@node1 ~]# galera_new_cluster


# 其他node2 node3节点重启数据库服务
[root@node2 ~]# systemctl stop mariadb
[root@node2 ~]# systemctl start mariadb

# 查看验证
[root@node1 ~]# mysql -uroot -p123456 -e "show status like 'wsrep_cluster_size';"
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 3 |
+--------------------+-------+









11、使用xnode1,xnode2节点,xnode1创建nfs的server端,然后配置/etc/exports使用/mnt/data目录进行共享,然后配置xnode2为nfs的client端,并且将共享目录/mnt/data 挂载到/opt并查看,配置完成后将过程以文本形式提交到答题框
# 安装nfs rpcbind服务
[root@nfs ~]# yum install -y nfs-utils rpcbind
# 创建共享目录
[root@nfs ~]# mkdir /mnt/data
[root@nfs ~]# chmod -Rf 777 /mnt/data
# 修改配置文件进行共享
[root@nfs ~]# vi /etc/exports
/mnt/data 192.168.100.10(rw,sync,no_root_squash) # 读写 同时写入内存与硬盘 映射为nfs服务器匿名
# 重启服务并设置开机自启
[root@nfs ~]# systemctl start rpcbind nfs-server
[root@nfs ~]# systemctl enable rpcbind nfs-server
# 查看是否生效
[root@nfs ~]# exportfs -rv
exporting 192.168.100.10:/mnt/data

###################客户端#################
# 安装nfs服务
[root@controller ~]# yum install -y nfs-utils
# 检测nfs服务端是否设置共享目录
[root@controller ~]# showmount -e 192.168.200.14
Export list for 192.168.200.14:
/mnt/data 192.168.100.10

[root@controller ~]# mount -t nfs 192.168.200.14:/mnt/data /opt









12、使用VMWare软件启动提供的opensatckallinone镜像,自行检查openstack中各服务的状态,若有问题自行排查。使用openstack命令,创建名为examtest的容器并查询,上传一个aaa.txt(可自行创建)文件到这个容器中并查询。依次将操作命令和返回结果以文本形式提交到答题框
[root@xiandian ~]# openstack container create examtest

+---------------------------------------+-----------+------------------------------------+

| account | container | x-trans-id |

+---------------------------------------+-----------+------------------------------------+

| AUTH_0ab2dbde4f754b699e22461426cd0774 | examtest | tx9e7b54f8042d4a6ca5ccf-005a93daf3 |

+---------------------------------------+-----------+------------------------------------+

[root@xiandian ~]# openstack container list
+----------+
| Name |
+----------+
| examtest |
+----------+
[root@xiandian ~]# openstack object create examtest aaa.txt
+---------+-----------+----------------------------------+
| object | container | etag |
+---------+-----------+----------------------------------+
| aaa.txt | examtest | 45226aa24b72ce0ccc4ff73eefe2e26f |
+---------+-----------+----------------------------------+
[root@xiandian ~]# openstack object list examtest
+---------+
| Name |
+---------+
| aaa.txt |
+---------+









13、下面有一段Python脚本,由于工程师的失误,将脚本中的某些代码删除了,但注释还在,请根据注释,填写代码。最后将填写的代码按照顺序以文本形式提交至答题框。 Python脚本如下: def get_html(url, encoding='utf-8'): # 定义headers headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' } # 调用requests依赖包的get方法,请求该网址,返回response (此处需填写) # 设置response字符为utf-8 (此处需填写) # 返回response的文本 return response.text
response = requests.get(url, headers=headers)

response.encoding = encoding










14、使用openstackallinone节点,使用提供的Python.tar完成 python3.6 软件和依赖库的安装,然后在/opt目录中编写create_user.py,该代码可以创建一个名字为test,密码为000000的用户,编写完成后,执行该代码,并查看该代码的详细信息和用户的详细信息,然后提交到答题框
# 安装python和依赖库后,在pycharm编写python代码

import requests
import json
import time

controller_ip = "192.168.100.10"
url = f"http://{controller_ip}:35357/v3/auth/tokens"

headers = {
    "Content-Type": "application/json"
}
token_data = {
    "auth": {
        "identity": {
            "methods": ["password"],
            "password": {
                "user": {
                    "name": "admin",
                    "domain": {
                        "name": "demo"
                    },
                    "password": "000000"
                }
            }
        },
        "scope": {
            "project": {
                "domain": {
                    "name": "demo"
                },
                "name": "admin"
            }
        }
    }
}
Token = requests.post(url=url, headers=headers, json=token_data).headers.get("X-Subject-Token")
headers = {
    "X-Auth-Token": Token
}


class UserApi:
    def __init__(self, url, headers):
        self.url = url
        self.headers = headers

    def create_user(self, name,password):
        body = {
            "user": {
                "name": name,
                "password": "000000",
                "domain_id": "b000d36c11b74f4786a8b90bcaefaabb",
                "description": "API create user!"
            }
        }
        status_code = requests.post(url=self.url, headers=self.headers, json=body).json()
        print(status_code)

    def delete_user(self, name):
        status_code = requests.get(url=self.url, headers=self.headers).json()
        for i in status_code["users"]:
            if i["name"] == name:
                i = i["id"]
                requests.delete(url=self.url + f"/{i}", headers=headers)


user = UserApi(url=f"http://{controller_ip}:35357/v3/users", headers=headers)
user.delete_user(name="test")
user.create_user(name="test")








15、使用VMWare软件启动提供的k8sallinone镜像,确认IP地址,执行/root目录下的install.sh脚本进行一键部署K8S平台。然后编写yaml,创建一个网络策略network-policy,要求只有internal命名空间下的Pod可以通过TCP协议的8080端口访问到mysql命名空间下的Pod,创建完成后查看编写的yaml文件和成功后的网络策略,将过程和结果提交到答题框
# 创建
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: network-exam
  namespace: mysql
spec:
  podSelector: {} 
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          ns: internal
    ports:
    - port: 8080
      protocol: TCP








16、使用上一题安装完成的K8S平台,进行K8S平台的使用与运维。创建deployment基于镜像mysql:5.6和wordpress:latest部署wordpress服务,wordpress使用mysql作为后端数据库使用,wordpress并且创建service以NodePort的方式对外暴露端口32000,运行成功后将结果和yaml文件都以文本框的形式提交到答题框
# 这是为参考,以实际为准
# 创建pv

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-persistent-storage
  labels:
    type: local
spec:
  accessModes: 
  - ReadWriteOnce
  hostPath: 
    path: /var/lib/mysql
  capacity:
    storage: 3Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: word-pv
  labels:
    type: local
spec:
  accessModes: 
  - ReadWriteOnce
  hostPath: 
    path: /var/www/html
  capacity:
    storage: 3Gi
# 创建deployment
[root@master ~]# cat mysql-deployment.yaml 
apiVersion: v1
kind: Service
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress-mysql
spec:
  type: ClusterIP
  selector:
    app: wordpress-mysql
  clusterIP: None 
  ports:
  - port: 3306
    targetPort: 3306
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
  labels:
    type: local
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress-mysql
spec:
  selector:
    matchLabels:
      app: wordpress-mysql
  template:
    metadata:
      labels:
        app: wordpress-mysql
    spec:
      containers:
      - name: wordpress-mysql
        image: 192.168.100.4/library/mysql:5.6 
        imagePullPolicy: IfNotPresent
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-pass
              key: password
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pv-claim

# 创建wordpress
[root@master ~]# cat wordpress-deployment.yaml 
apiVersion: v1
kind: Service
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  selector: 
    app: wordpress
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort: 32000
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wp-pv-claim
  labels:
    type: local-word
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
      - name: wordpress
        image: 192.168.100.4/library/wordpress:latest
        imagePullPolicy: IfNotPresent
        env:
        - name: WORDPRESS_DB_HOST
          value: wordpress-mysql
        - name: WORDPRESS_DB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-pass
              key: password
        ports:
        - containerPort: 80
        volumeMounts:
        - name: wordpress-persistent-storage
          mountPath: /var/www/html
      volumes:
      - name: wordpress-persistent-storage
        persistentVolumeClaim:
          claimName: wp-pv-claim








17、使用上一题安装完成的K8S平台,进行K8S平台的使用与运维。编写secret.yaml创建secret,要求为名字为mysecret,里面包含name字段,值为Gjbs001,创建该secret并查看yaml,将查看的内容以文本的形式填写到答题框
[root@master ~]# echo -n "Gjbs001" | base64
R2piczAwMQ==
[root@master secret]# cat secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
data:
  name: "R2piczAwMQ=="










18、继续使用上一题的K8S平台,并使用提供的k8s-api.tar完成python3.6软件和依赖库的安装,然后在/root目录下编写create_pod.py,使用nginx:latest镜像创建名字叫nginx-api的pod,执行结束后,将create_pod.py的代码以及查看pod是否成功运行以文本框的形式提交到答题框
# 安装部署完成python后 在pycharm中编写
# 首先获取token值
# kubectl create serviceaccount wu
# kubectl create clusterrolebinding --clusterrole=cluster-admin --serviceaccount=default:wu admin
# kubectl describe secrets  wu-token-zp7ss 

import time
import requests
import json
import yaml

def get_token(token):
    bearer_token = "bearer "+ token
    return bearer_token

class pod_manager:
    def __init__(self,node_url,headers):
        self.node_url = node_url
        self.headers = headers

    def create_pod(self,yamlFile,namespace):
        with open(yamlFile,encoding="utf-8") as f:
            body = json.dumps(yaml.safe_load(f))
        requests_url = self.node_url + "/api/v1/namespaces/" + namespace + "/pods"
        return json.loads(requests.post(requests_url,headers=self.headers,data=body,verify=False).text)

    def delete_pod(self,name,namespace):
        requests_url = self.node_url + "/api/v1/namespaces/" +namespace + "/pods/" + name
        return json.loads(requests.delete(requests_url,headers=self.headers,verify=False).text)

    def get_pod(self,name, namespace):
        requests_url = self.node_url + "/api/v1/namespaces/" + namespace + "/pods/" + name
        return json.loads(requests.get(requests_url,headers=self.headers,verify=False).text)

if __name__ == "__main__":
    # 基础导入参数(url,token,headers)
    token_data = "eyJhbGciOiJSUzI1NiIsImtpZCI6ImdzeVJaOG56Q3R2UGcxS3VJb3BJUHhpU1B1eXdlNnNMcFRJOUZTUGk1RlkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImFkbWluLXd1LXRva2VuLW1ydHdsIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXd1Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiM2FiZjZkYmQtNWYzMC00NTQ2LWI4OTUtZWMwZjA2MzQwNjE5Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OmRlZmF1bHQ6YWRtaW4td3UifQ.LHGCmr1BJVpnlD8srAA1uuHZF78xT11-W9x5Vq77deR5_f94YUwMFHTYSijk9oqQMfpmOZFpclowAS8zuyyB2V3uVYmyx92pgd3KfW_uuSgoGw_ytMG0KOoj0H819i-umz34vlWWNRz1_0LJnMtWxQ_LPYXHNhMEr_Qb6GQgpt9k-w13evdLWUedOCap2TzRZFEEbNcDRdSXq-z1VuhmkSMT4RjPjs4Yv_FM-JlNZsfo7964mB7ENtm4UHsFu947GUbHZYL6QCHzA3SpLDDIhcThI6X636ntHEufuqVFGJGTMoJc_cY2MWIvqbKneRTdC8Lqev0sObdn-veS_5eBBQ"
    cluster_url = "https://172.16.20.11:6443"
    token = get_token(token_data)
    headers = {
        "Authorization": token,
        "Content-Type": "application/json"
    }
    # 实例化对象
    pod_m = pod_manager(node_url=cluster_url,headers=headers)

    # 创建pod 如果有就删除(if,else)
    name="exam-v2"
    namespace="default"
    if not pod_m.get_pod(name,namespace):
        pod_m.create_pod(yamlFile="../yaml/test-pod.yaml",namespace=namespace)
    else:
        pod_m.delete_pod(name,namespace)
        time.sleep(5)
        pod_m.create_pod(yamlFile="../yaml/test-pod.yaml", namespace=namespace)
        result = pod_m.get_pod(name,namespace)
        print(result)

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值