k8s安装方式总结
实验环境规划:操作系统:centos7.6配置:16G内存/4vCPU/100硬盘网络:云服务器kubeadm 是官方提供的开源工具,是一个开源项目,用于快速搭建 kubernetes 集群,目前是比较方便和推荐使用的。kubeadm init 以及 kubeadm join 这两个命令可以快速创建 kubernetes 集群。Kubeadm 初始化 k8s,所有的组件都是以 pod 形式运行的
kubeadm方式
实验环境规划:
操作系统:centos7.6
配置:16G内存/4vCPU/100硬盘
网络:云服务器
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
kubeadm 和二进制安装 k8s 适用场景分析
kubeadm 是官方提供的开源工具,是一个开源项目,用于快速搭建 kubernetes 集群,目前是比较方便和推荐使用的。kubeadm init 以及 kubeadm join 这两个命令可以快速创建 kubernetes 集群。Kubeadm 初始化 k8s,所有的组件都是以 pod 形式运行的,具备故障自恢复能力。
kubeadm 是工具,可以快速搭建集群,也就是相当于用程序脚本帮我们装好了集群,属于自动部署,简化部署操作,证书、组件资源清单文件都是自动创建的,自动部署屏蔽了很多细节,使得对各个模块感知很少,如果对 k8s 架构组件理解不深的话,遇到问题比较难排查。
kubeadm 适合需要经常部署 k8s,或者对自动化要求比较高的场景下使用。
二进制:在官网下载相关组件的二进制包,如果手动安装,对 kubernetes 理解也会更全面。Kubeadm 和二进制都适合生产环境,在生产环境运行都很稳定,具体如何选择,可以根据实际项目进行评估。
k8s集群环境初始化
所有主机均需要执行以下操作
-
配置机器主机名
k8s01:
[root@k8s01 ~]# hostnamectl set-hostname k8s01 && bash
k8s02
[root@k8s02 ~]# hostnamectl set-hostname k8s02 && bash
k8s03
[root@k8s03 ~]# hostnamectl set-hostname k8s03 && bash
-
配置hosts文件,相互之间通过主机名互相访问
修改每台机器的
/etc/hosts
文件,增加以下三行192.168.1.59 k8s01 192.168.1.153 k8s02 192.168.1.186 k8s03
-
配置主机之间无密码访问
k8s01
# 一路回车,不输入密码 [root@k8s01 ~]# ssh-keygen # 把本地生成的秘钥文件和私钥文件拷贝到远程主机 [root@k8s01 ~]# ssh-copy-id k8s02 [root@k8s01 ~]# ssh-copy-id k8s03
k8s02
# 一路回车,不输入密码 [root@k8s02 ~]# ssh-keygen # 把本地生成的秘钥文件和私钥文件拷贝到远程主机 [root@k8s02 ~]# ssh-copy-id k8s01 [root@k8s02 ~]# ssh-copy-id k8s03
k8s03
# 一路回车,不输入密码 [root@k8s03 ~]# ssh-keygen # 把本地生成的秘钥文件和私钥文件拷贝到远程主机 [root@k8s03 ~]# ssh-copy-id k8s01 [root@k8s03 ~]# ssh-copy-id k8s02
-
关闭交换分区swap,提升性能
临时关闭
[root@k8s01 ~]# swapoff -a
永久关闭:注释swap挂载,给swap这行的开头加一下注释
[root@k8s01 ~]# vim /ets/fstab #/dev/mapper/centos-swap swap swap defaults 0 0
**问题1:**为什么要关闭swap交换分区
Swap 是交换分区,如果机器内存不够,会使用 swap 分区,但是 swap 分区的性能较低,k8s 设计的时候为了能提升性能,默认是不允许使用姜欢分区的。Kubeadm 初始化的时候会检测 swap 是否关闭,如果没关闭,那就初始化失败。如果不想要关闭交换分区,安装 k8s 的时候可以指定–ignore-preflight-errors=Swap 来解决。
-
修改机器内核参数
[root@k8s01 ~]# modprobe br_netfilter [root@k8s01 ~]# echo "modprobe br_netfilter" >> /etc/profile [root@k8s01 ~]# cat > /etc/sysctl.d/k8s.conf <<EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF [root@k8s01 ~]# sysctl -p /etc/sysctl.d/k8s.conf
问题1:sysctl是做什么的?
在运行时配置内核参数 -p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf 中加载
**问题2:**为什么要执行modprobe br_netfilter
修改/etc/sysctl.d/k8s.conf 文件,增加如下三行参数:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
sysctl -p /etc/sysctl.d/k8s.conf 出现报错:
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory
解决方法:
modprobe br_netfilter
**问题3:**为什么开启 net.bridge.bridge-nf-call-iptables 内核参数?
在 centos 下安装 docker,执行 docker info 出现如下警告:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
解决办法:
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
**问题4:**为什么要开启 net.ipv4.ip_forward = 1 参数?
kubeadm 初始化 k8s 如果报错:
就表示没有开启 ip_forward,需要开启。
net.ipv4.ip_forward 是数据包转发:
出于安全考虑,Linux 系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的 ip 地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。要让 Linux 系统具有路由转发功能,需要配置一个 Linux 的内核参数 net.ipv4.ip_forward。这个参数指定了 Linux 系统当前对路由转发功能的支持情况;其值为 0 时表示禁止进行 IP 转发;如果是 1,则说明 IP 转发功能已经打开。
-
关闭firewalld防火墙
[root@k8s01 ~]# systemctl stop firewalld [root@k8s01 ~]# systemctl disable firewalld
-
关闭selinux
[root@k8s01 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
修改 selinux 配置文件之后,重启机器,selinux 配置才能永久生效
[root@k8s01 ~]# getenforce Disabled
显示 Disabled 说明 selinux 已经关闭
-
配置安装k8s组件需要的阿里云repo源
[root@k8s01 ~]# vim /etc/yum.repos.d/kubernetes.repo
[kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0
将k8s01上的Kubernetes的repo源复制给k8s02和k8s03
[root@k8s01 ~]# scp /etc/yum.repos.d/kubernetes.repo k8s02:/etc/yum.repos.d/ [root@k8s01 ~]# scp /etc/yum.repos.d/kubernetes.repo k8s03:/etc/yum.repos.d/
-
配置时间同步
在3台主机上分别执行如下:
#安装 ntpdate 命令 [root@k8s01 ~]# yum install ntpdate -y #跟网络时间做同步 [root@k8s01 ~]# ntpdate cn.pool.ntp.org #把时间同步做成计划任务 [root@k8s01 ~]# crontab -e * */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org #重启 crond 服务 [root@k8s01 ~]# service crond restart
-
开启ipvs
#把 ipvs.modules 上传到 k8s01 机器的/etc/sysconfig/modules/目录下 [root@k8s01 ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs ip_vs_ftp 13079 0 nf_nat 26583 1 ip_vs_ftp ip_vs_sed 12519 0 ip_vs_nq 12516 0 ip_vs_sh 12688 0 ip_vs_dh 12688 0
在其他两台主机上执行相同操作
**问题1:**ipvs 是什么?
ipvs (IP Virtual Server) 实现了传输层负载均衡,也就是我们常说的 4 层 LAN 交换,作为 Linux内核的一部分。ipvs 运行在主机上,在真实服务器集群前充当负载均衡器。ipvs 可以将基于 TCP 和 UDP的服务请求转发到真实服务器上,并使真实服务器的服务在单个 IP 地址上显示为虚拟服务。
**问题2:**ipvs 和 iptable 对比分析
kube-proxy 支持 iptables 和 ipvs 两种模式, 在 kubernetes v1.8 中引入了 ipvs 模式,在v1.9 中处于 beta 阶段,在 v1.11 中已经正式可用了。iptables 模式在 v1.1 中就添加支持了,从v1.2 版本开始 iptables 就是 kube-proxy 默认的操作模式,ipvs 和 iptables 都是基于 netfilter的,但是 ipvs 采用的是 hash 表,因此当 service 数量达到一定规模时,hash 查表的速度优势就会显现出来,从而提高 service 的服务性能。那么 ipvs 模式和 iptables 模式之间有哪些差异呢?
1、ipvs 为大型集群提供了更好的可扩展性和性能
2、ipvs 支持比 iptables 更复杂的复制均衡算法(最小负载、最少连接、加权等等)
3、ipvs 支持服务器健康检查和连接重试等功能
-
安装基础软件包
在3台主机上分别执行以下操作:
[root@k8s01 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate telnet ipvsadm
-
安装iptables
如果用 firewalld 不习惯,可以安装 iptables ,在 k8s01、k8s02、k8s03 上操作:
#安装 iptables [root@k8s01 ~]# yum install iptables-services -y #禁用 iptables [root@k8s01 ~]# service iptables stop && systemctl disable iptables #清空防火墙规则 [root@k8s01 ~]# iptables -F
安装docker服务
所有主机都需要执行
-
移除旧版本
[root@k8s01 ~]# yum remove docker*
-
设置docker yum源
[root@k8s01 ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
这个是Docker官方的yum源,由于国内访问国外的网站会很慢,如果发现下载很慢,建议换成国内的镜像源。
[root@k8s01 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
安装最新docker engine
[root@k8s01 ~]# yum install -y docker-ce docker-ce-cli containerd.io
-
安装指定版本docker engine
#找到所有可用docker版本列表 [root@k8s01 ~]# yum list docker-ce --showduplicates | sort -r # 安装指定版本,用上面的版本号替换<VERSION_STRING> [root@k8s01 ~]# yum -y install docker-ce-3:20.10.12-3.el7.x86_64 docker-ce-cli-3:20.10.12-3.el7.x86_64 containerd.io #例如: #yum install docker-ce-3:20.10.5-3.el7.x86_64 docker-ce-cli-3:20.10.5-3.el7.x86_64 containerd.io #注意加上 .x86_64 大版本号
-
启动服务
[root@k8s01 ~]# systemctl start docker [root@k8s01 ~]# systemctl enable docker
-
设置镜像加速
#修改 docker 文件驱动为 systemd,默认为 cgroupfs,kubelet 默认使用 systemd,两者必须一致才可以。
[root@k8s01 ~]# mkdir -p /etc/docker [root@k8s01 ~]# tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors":[ "https://rsbud4vc.mirror.aliyuncs.com", "https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn", "https://dockerhub.azk8s.cn", "http://hub-mirror.c.163.com", "http://qtid6917.mirror.aliyuncs.com", "https://rncxm540.mirror.aliyuncs.com" ], "exec-opts": ["native.cgroupdriver=systemd"] } EOF [root@k8s01 ~]# systemctl daemon-reload [root@k8s01 ~]# systemctl restart docker
安装初始化k8s需要的软件包
所有主机都需要执行
[root@k8s01 ~]# yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6
[root@k8s01 ~]# systemctl enable kubelet
[root@k8s01 ~]# systemctl start kubelet
[root@k8s01 ~]# systemctl status kubelet
上面可以看到 kubelet 状态不是 running 状态,这个是正常的,不用管,等 k8s 组件起来这个kubelet 就正常了。
注:每个软件包的作用
Kubeadm: kubeadm 是一个工具,用来初始化 k8s 集群的
kubelet: 安装在集群所有节点上,用于启动 Pod 的
kubectl: 通过 kubectl 可以部署和管理应用,查看各种资源,创建、删除和更新各种组件
kubeadm初始化k8s集群
把初始化 k8s 集群需要的离线镜像包上传到 k8s01、k8s02、k8s03 机器上,手动解压:
[root@k8s01 ~]# docker load -i k8simage-1-20-6.tar.gz
#使用 kubeadm 初始化 k8s 集群
[root@k8s01 ~]# kubeadm init --kubernetes-version=1.20.6 --apiserver-advertise-address=192.168.1.59 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=SystemVerification
注:
–apiserver-advertise-address:指定apiserver地址,一般是主机Master的内网ip
–image-repository registry.aliyuncs.com/google_containers:手动指定仓库地址为registry.aliyuncs.com/google_containers。
kubeadm 默认从 k8s.grc.io 拉取镜像,但是 k8s.gcr.io访问不到,所以需要指定从 registry.aliyuncs.com/google_containers 仓库拉取镜像。
显示如下,说明安装完成:
kubeadm join 192.168.40.180:6443 --token gsa9je.x35o1gfhd4hq26ci \
--discovery-token-ca-cert-hash sha256:8c18c824fcc6f91dd03205e63005cfeef36061f86d1b14a3ee562a6eb6ad4447
#上面命令是把 node 节点加入集群,需要保存下来,每个人的都不一样
#配置 kubectl 的配置文件 config,相当于对 kubectl 进行授权,这样 kubectl 命令可以使用这个证书对 k8s 集群进行管理
[root@k8s01 ~]# mkdir -p $HOME/.kube
[root@k8s01 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s01 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@k8s01 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s01 NotReady control-plane,master 84s v1.20.6
此时集群状态还是 NotReady 状态,因为没有安装网络插件。
添加第一个工作节点
-
在 k8s01上查看加入节点的命令:
[root@k8s01 ~]# kubeadm token create --print-join-command
显示如下:
kubeadm join 192.168.1.59:6443 --token tlletq.xi3be15245r40dkz --discovery-token-ca-cert-hash sha256:f515be3a8801bdac366f09bb1a4c393db0bfd43ee0a737abec8b9a3fbd667e63
-
把 k8s02 加入 k8s 集群:
[root@k8s02 ~]# kubeadm join 192.168.1.59:6443 --token vulvta.9ns7da3saibv4pg1 --discovery-token-ca-cert-hash sha256:72a0896e27521244850b8f1c3b600087292c2d10f2565adb56381f1f4ba7057a --ignore-preflight-errors=SystemVerification
#看到上面说明 k8s02 节点已经加入到集群了,充当工作节点
-
在 k8s01 上查看集群节点状况:
[root@k8s01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s01 NotReady control-plane,master 3m45s v1.20.6 k8s02 NotReady <none> 80s v1.20.6
添加第二个工作节点
-
在 xianchaomaster1 上查看加入节点的命令:
[root@k8s01 ~]# kubeadm token create --print-join-command
显示如下:
kubeadm join 192.168.40.180:6443 --token vulvta.9ns7da3saibv4pg1 --discovery-token-ca-cert-hash sha256:72a0896e27521244850b8f1c3b600087292c2d10f2565adb56381f1f4ba7057a
-
把 k8s03 加入 k8s 集群:
[root@k8s03 ~]# kubeadm join 192.168.40.180:6443 --token vulvta.9ns7da3saibv4pg1 --discovery-token-ca-cert-hash sha256:72a0896e27521244850b8f1c3b600087292c2d10f2565adb56381f1f4ba7057a --ignore-preflight-errors=SystemVerification
#看到上面说明 k8s03 节点已经加入到集群了,充当工作节点
-
在 k8s01 上查看集群节点状况:
[root@k8s01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s01 NotReady control-plane,master 5m33s v1.20.6 k8s02 NotReady <none> 3m8s v1.20.6 k8s03 NotReady <none> 66s v1.20.6
#可以看到 k8s02、k8s03 的 ROLES 角色为空,就表示这个节点是工作节点。
#可以把 k8s02 和k8s03 的 ROLES 变成 work,按照如下方法:
[root@k8s02 ~]# kubectl label node k8s02 node-role.kubernetes.io/worker=worker [root@k8s03 ~]# kubectl label node k8s03 node-role.kubernetes.io/worker=worker
注意:上面状态都是 NotReady 状态,说明没有安装网络插件
安装 k8s 网络组件-Calico
上传 calico.yaml 到 k8s01 上,使用 yaml 文件安装 calico 网络插件 。
[root@k8s01 ~]# kubectl apply -f calico.yaml
注:在线下载配置文件地址是: https://docs.projectcalico.org/manifests/calico.yaml
再次查看集群状态。
[root@k8s01 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s01 Ready control-plane,master 8m5s v1.20.6
k8s02 Ready worker 5m40s v1.20.6
k8s03 Ready worker 3m38s v1.20.6
[root@xianchaomaster1 ~]# kubectl get pods -n kube-system
#STATUS 状态是 Ready,说明 k8s 集群正常运行了
k8s测试
-
测试在 k8s 创建 pod 是否可以正常访问网络
把 busybox-1-28.tar.gz 上传到 k8s02、k8s03 节点,手动解压
[root@k8s02 ~]# docker load -i busybox-1-28.tar.gz [root@k8s03 ~]# docker load -i busybox-1-28.tar.gz [root@k8s01 ~]# kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh / # ping www.baidu.com PING www.baidu.com (39.156.66.18): 56 data bytes 64 bytes from 39.156.66.18: seq=0 ttl=127 time=39.3 ms
#通过上面可以看到能访问网络,说明 calico 网络插件已经被正常安装了
-
测试 k8s 集群中部署 tomcat 服务
把 tomcat.tar.gz 上传到 k8s02、k8s03,手动解压
[root@k8s02 ~]# docker load -i tomcat.tar.gz [root@k8s03 ~]# docker load -i tomcat.tar.gz [root@k8s01 ~]# kubectl apply -f tomcat.yaml [root@k8s01 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE demo-pod 1/1 Running 0 6m1s [root@xianchaomaster1 ~]# kubectl apply -f tomcat-service.yaml [root@k8s01 ~]# kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23m tomcat NodePort 10.97.146.144 <none> 8080:30080/TCP 6m3s
在浏览器访问 k8s02 节点的 ip:30080 即可请求到浏览器
-
测试 coredns 是否正常
[root@k8s01 ~]# kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh If you don't see a command prompt, try pressing enter. / # nslookup kubernetes.default.svc.cluster.local Server: 10.96.0.10 Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local Name: kubernetes.default.svc.cluster.local Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local
10.96.0.10 就是我们 coreDNS 的 clusterIP,说明 coreDNS 配置好了。解析内部 Service 的名称,是通过 coreDNS 去解析的。
#注意:
busybox 要用指定的 1.28 版本,不能用最新版本,最新版本,nslookup 会解析不到 dns 和 ip
命令补全
在使用bash命令行时,在提示符下输入某个命令的前面几个字符,然后按TAB键,就会列出以这几个字符开头的命令供我们选择。不光如此,还可以进行参数补全,但只限于文件参数,当输入到参数部分时,按TAB键,就会列出以这个参数开头的文件路径供我们选择。 现在 http://www.caliban.org/bash/ 上提供了一个名为bash-completion的软件包,通过一个复杂的脚本bash_completion实现可编程的补全程序,减少系统管理员日常维护工作,减少差错,提高工作效率。
网站:
bash-completion补全工具官网:https://caliban.org/bash/
在日常管理k8s集群的时候,时刻都会使用到Kubectl 命令行工具,但是该命令还是挺复杂的,使用中也记不住那么多的api选项,所以这里介绍一下Kubectl命令补全工具(其实是Linux中bash命令自动补全工具)的安装。
安装:
[root@k8s01 ~]# yum -y install bash-completion
[root@k8s01 ~]# source /usr/share/bash-completion/bash_completion
[root@k8s01 ~]# source <(kubectl completion bash)
[root@k8s01 ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc
验证:
以下自动补全命令验证在不安装bash_completion工具时是无法实现自动补全的。
-
Kubectl命令自动补全:
# 按TAB键两次,提示kubectl后面可跟的命令 [root@k8s01 rbac]# kube kubeadm kubectl kubelet [root@k8s01 rbac]# kubectl annotate autoscale cp drain help plugin scale wait api-resources certificate create edit kustomize port-forward set api-versions cluster-info debug exec label proxy taint apply completion delete explain logs replace top attach config describe expose options rollout uncordon auth cordon diff get patch run version [root@k8s01 rbac]# kubectl e edit exec explain expose [root@k8s01 rbac]# kubectl exec - --add-dir-header --context= -n --stderrthreshold= --alsologtostderr -f --namespace --stdin --as --filename --namespace= -t --as= --filename= --one-output --tls-server-name --as-group -i --password --tls-server-name= --as-group= --insecure-skip-tls-verify --password= --token -c --kubeconfig --pod-running-timeout --token= --cache-dir --kubeconfig= --pod-running-timeout= --tty --cache-dir= --log-backtrace-at --profile --user --certificate-authority --log-backtrace-at= --profile= --user= --certificate-authority= --log-dir --profile-output --username --client-certificate --log-dir= --profile-output= --username= --client-certificate= --log-file --request-timeout -v --client-key --log-file= --request-timeout= --v --client-key= --log-file-max-size -s --v= --cluster --log-file-max-size= --server --vmodule --cluster= --log-flush-frequency --server= --vmodule= --container --log-flush-frequency= --skip-headers --warnings-as-errors --container= --logtostderr --skip-log-headers --context --match-server-version --stderrthreshold [root@k8s01 rbac]# kubectl get n namespaces networkpolicies.networking.k8s.io nodes networkpolicies.crd.projectcalico.org networksets.crd.projectcalico.org
-
Linux中bash命令自动补全:
[root@k8s01 rbac]# iptables --
--append --exact --insert --match --out-interface --rename-chain --table
--delete --flush --jump --modprobe --policy --replace --verbose
--delete-chain --fragment --line-numbers --new --proto --set-counters --version
--destination --in-interface --list --numeric --protocol --source --zero
[root@k8s01 rbac]# systemctl s
set-default set-property show-environment start stop switch-root
set-environment show snapshot status suspend
[root@k8s01 rbac]# firewall-cmd --
--add-forward-port= --info-icmptype= --query-masquerade
--add-icmp-block= --info-ipset= --query-panic
--add-icmp-block-inversion --info-service= --query-port=
--add-interface= --info-zone= --query-protocol=
--add-lockdown-whitelist-command= --list-all --query-rich-rule=
--add-lockdown-whitelist-context= --list-all-zones --query-service=
--add-lockdown-whitelist-uid= --list-forward-ports --query-source=
--add-lockdown-whitelist-user= --list-icmp-blocks --query-source-port=
--add-masquerade --list-interfaces --reload
--add-port= --list-lockdown-whitelist-commands --remove-forward-port=
--add-protocol= --list-lockdown-whitelist-contexts --remove-icmp-block=
--add-rich-rule= --list-lockdown-whitelist-uids --remove-icmp-block-inversion
--add-service= --list-lockdown-whitelist-users --remove-interface=
--add-source= --list-ports --remove-lockdown-whitelist-command=
--add-source-port= --list-protocols --remove-lockdown-whitelist-context=
--change-interface= --list-rich-rules --remove-lockdown-whitelist-uid=
--change-source= --list-services --remove-lockdown-whitelist-user=
--change-zone= --list-source-ports --remove-masquerade
--complete-reload --list-sources --remove-port=
--direct --lockdown-off --remove-protocol=
--get-active-zones --lockdown-on --remove-rich-rule=
--get-default-zone --panic-off --remove-service=
--get-description --panic-on --remove-source=
--get-helpers --permanent --remove-source-port=
--get-icmptypes --query-forward-port= --set-default-zone=
--get-ipset-types --query-icmp-block= --set-description=
--get-log-denied --query-icmp-block-inversion --set-log-denied=
--get-services --query-interface= --set-short=
--get-short --query-lockdown --state
--get-zone-of-interface= --query-lockdown-whitelist-command= --version
--get-zones --query-lockdown-whitelist-context= --zone=
--help --query-lockdown-whitelist-uid=
--info-helper= --query-lockdown-whitelist-user=
更多推荐
所有评论(0)