以下是将您提供的笔记整理为 Markdown 格式的内容:


Linux 软件安装与 Kubernetes 集群部署笔记

一、软件安装的三种形式

1. 源代码形式

  • 绝大多数开源软件以源代码形式发布
  • 源代码通常打包为 .tar.gz 归档压缩文件
  • 源代码需编译为二进制形式才能运行
  • 基本编译流程:

    1. ./configure:检查编译环境
    2. make:对源代码进行编译
    3. 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 --initdb
    • rpm --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

如果还需要其它帮助,可以随时告诉我。

标签: none

添加新评论