13-软件安装方式
以下是将您提供的笔记整理为 Markdown 格式的内容:
Linux 软件安装与 Kubernetes 集群部署笔记
一、软件安装的三种形式
1. 源代码形式
- 绝大多数开源软件以源代码形式发布
- 源代码通常打包为
.tar.gz归档压缩文件 - 源代码需编译为二进制形式才能运行
基本编译流程:
./configure:检查编译环境make:对源代码进行编译make install:将生成的可执行文件安装到系统中
2. RPM 安装
- 安装软件:
rpm -ivh rpm包名 - 升级软件:
rpm -Uvh rpm包名 - 卸载软件:
rpm -e rpm包名 - 查询软件包详细信息:
rpm -qpi rpm包名 - 查询某个文件属于哪个 RPM 包:
rpm -qf 文件名 - 查询软件包安装时写入的文件:
rpm -qpl rpm包名 常用 RPM 站点:
RPM 包的脚本
preinstall:安装前脚本postinstall:安装后脚本preuninstall:卸载前脚本postuninstall:卸载后脚本
查询命令
- 查询所有已安装包:
rpm -qa - 配合 grep 使用:
rpm -qa | grep 'zip' - 查询包摘要信息:
rpm -qi 包名 - 查询包生成的文件清单:
rpm -ql 包名 - 查询文件所属包:
rpm -qf /path/to/file - 查询包生成的配置文件:
rpm -qc 包名 - 查询包生成的帮助文档:
rpm -qd 包名 - 查询包相关脚本:
rpm -q --scripts 包名
对未安装包的查询
- 使用
-p选项,如:rpm -qpi /path/to/rpm_file
校验 RPM 包
rpm -V 包名(无输出表示未被修改)
常用命令
- 安装:
rpm -ivh software.rpm - 卸载:
rpm -e software.rpm - 升级:
rpm -Uvh software.rpm - 支持 HTTP/FTP:
rpm -ivh http://...
RPM 数据库
- 数据库位置:
/var/lib/rpm 重建数据库:
rpm --initdbrpm --rebuilddb
3. YUM 安装
- 自动解决依赖关系
- 支持分组安装
- 引入仓库概念,支持多个仓库
- 配置简单
仓库配置
- 配置文件目录:
/etc/yum.repos.d/
常用命令
- 安装:
yum install 包名 - 卸载:
yum remove 包名 - 升级:
yum update 包名 - 查询软件:
yum search 关键字 - 列出所有包:
yum list all - 列出已安装包:
yum list installed - 列出可安装包:
yum list available - 列出可更新包:
yum list updates - 查看仓库列表:
yum repo list - 查看包信息:
yum info 包名 - 查询文件所属包:
yum provides 文件名 - 清空缓存:
yum clean all - 生成缓存:
yum makecache - 重新安装:
yum reinstall 包名 - 本地安装:
yum localinstall rpm包路径 - 包组管理:
yum groupinstall 包组名
二、Python 3 源码安装示例
# 下载源码
wget https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz
# 解压
tar -xf Python-3.6.10.tgz -C /data/Python3.6/
# 预编译
./configure --prefix=/data/Python3/
# 编译与安装
make && make install
# 运行方式一:绝对路径
/data/Python3/bin/python3
# 运行方式二:添加环境变量
vi /etc/profile
PATH="/data/Python3/bin:$PATH"
source /etc/profile三、LAMP 环境安装示例
安装 EPEL 与依赖
yum -y install epel-release
yum -y install httpd httpd-devel
yum -y install php php-mysql php-snmp php-pdo perl-DBD-MySQL \
php-devel pcre pcre-devel openssl openssl-devel libxml2 libxml2-devel \
bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel \
libpng libpng-devel freetype freetype-devel gmp gmp-devel \
libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel \
cmake php-common php-ldap php-mbstring php-mcrypt php-bcmath \
php-gd gd gd-devel php-xml php-ldap php-process配置 Apache 支持 PHP
vim /etc/httpd/conf/httpd.conf
# 添加以下内容
DocumentRoot "/var/www/html"
TypesConfig /etc/mime.types
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.php index.html测试 PHP
vim /var/www/html/index.php
# 内容如下
<meta charset=utf8>
我是首页
<?php
phpinfo();
?>
# 重启服务
systemctl restart httpd四、SNMP 服务配置
# 安装 SNMP
sudo yum install -y net-snmp
# 开机自启
sudo systemctl enable snmpd
# 启动服务
sudo systemctl start snmpd
# 查看状态
sudo systemctl status snmpd
# 编辑配置
sudo vim /etc/snmp/snmpd.conf
# 修改为
com2sec notConfigUser 192.168.20.32 public
# 添加以下行
view systemview included .1
# 重启服务
sudo systemctl restart snmpd五、Kubernetes 集群部署(v1.23.6)
环境准备
- 关闭 SELinux、防火墙
- 关闭交换分区
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab- 修改主机名与 hosts
vi /etc/hosts
10.2.24.231 zz1
10.2.24.232 zz2
10.2.24.235 zz3
10.2.24.236 zz4- 内核参数调整
cat >> /etc/sysctl.d/k8s.conf << EOF
vm.swappiness=0
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
EOF
sysctl --system安装 Docker 与 Kubernetes 组件
- 添加 Kubernetes 阿里云源
vi /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg- 修改 Docker 驱动为 systemd
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"]
}
systemctl daemon-reload
systemctl restart docker- 安装 kubeadm、kubelet、kubectl
yum install --setopt=obsoletes=0 kubeadm-1.23.6-0 kubelet-1.23.6-0 kubectl-1.23.6-0 -y- 配置 kubelet
vim /etc/sysconfig/kubelet
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
systemctl enable kubelet拉取所需镜像
images=(
kube-apiserver:v1.23.17
kube-controller-manager:v1.23.17
kube-scheduler:v1.23.17
kube-proxy:v1.23.17
pause:3.6
etcd:3.5.1-0
coredns/coredns:v1.8.6
)
for imageName in ${images[@]}; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done初始化主节点
kubeadm init \
--apiserver-advertise-address=10.2.24.231 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.23.6 \
--service-cidr=10.2.0.0/12 \
--pod-network-cidr=10.2.0.0/16配置 kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config安装 Flannel 网络插件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl apply -f kube-flannel.yml节点加入集群
kubeadm join 10.2.24.231:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>六、常见问题处理
- 内核参数调整:
net.ipv4.ip_forward=1 - 重置 kubeadm:
kubeadm reset - 清除 CNI 配置:
rm -rf /etc/cni/net.d/* /var/lib/cni/calico - 重启服务:
systemctl restart kubelet
如果还需要其它帮助,可以随时告诉我。