安装环境
系统版本与内核版本:
cat /etc/redhat-release
# CentOS Linux release 7.9.2009 (Core)
cat /proc/version
# Linux version 3.10.0-1160.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Mon Oct 19 16:18:59 UTC 2020
安装步骤
修改 yum 源
yum repolist
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
yum repolist
部署Kubernetes(k8s)时,为什么要关闭swap、selinux、防火墙?
不止部署k8s,许多公司在装机过程就就直接关闭了swap、selinux和防火墙
selinux,这个是用来加强安全性的一个组件,但非常容易出错且难以定位,一般上来装完系统就先给禁用了
iptables防火墙,会对所有网络流量进行过滤、转发,如果是内网机器一般都会直接关闭,省的影响网络性能,但k8s不能直接关了,k8s是需要用防火墙做ip转发和修改的,当然也看使用的网络模式,如果采用的网络模式不需要防火墙也是可以直接关闭的
swap,这个当内存不足时,linux会自动使用swap,将部分内存数据存放到磁盘中,这个这样会使性能下降,为了性能考虑推荐关掉
SWAP就不太一样了,SWAP是让你在明确的OOM和没有报错但是莫名其妙服务就不能用了之间二选一,对于集群化的服务(比如etcd)来说是挂掉一个实例和整个集群都出毛病之间二选一,一般正常人都知道该选哪个
相关设置(为安装 k8s 做准备)
1、修改 主机名(hostname)
hostnamectl set-hostname k8s-173
2、修改 hosts 文件
echo "192.168.10.202 k8s-172" >> /etc/hosts
# 或者
cat >> /etc/hosts << EOF
192.168.10.202 k8s-172
EOF
3、关闭交换分区
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
free -h
4、修改内核参数,将桥接的IPv4流量传递到iptables的链
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
5、配置网络
可以通过 IPADDR 配置内网IP,配置后需要重启网卡来生效(已配置内网IP则不需要此步骤)
cat /etc/sysconfig/network-scripts/ifcfg-em2
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=039303a5-c70d-4973-8c91-97eaa071c23d
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.122.21
NETMASK=255.255.255.0
GATEWAY=192.168.122.1
DNS1=223.5.5.5
6、关闭防火墙
systemctl status firewalld.service # 查看防火墙状态
systemctl stop firewalld.service # 关闭防火墙
systemctl disable firewalld.service # 开机禁用防火墙
# systemctl enable firewalld.service # 打开防火墙
7、关闭 selinux
# 查看 selinux 状态
sestatus # 或者 sestatus -v 或者 getenforce
# 临时设置为 Permissive (宽松模式)
setenforce 0
# 永久关闭selinux(建议)
sudo sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
reboot
安装
# 安装必要工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加 Docker 软件源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 更新 yum 源
yum -y update
# 查看可以安装的 Docker 版本
yum list docker-ce --showduplicates | sort -r
# 安装 Docker-CE
yum install docker-ce
# 查看安装是否成功
docker version
配置
1、新建 daemon.json 文件,并配置,配置完使用 systemctl daemon-reload 重载配置,这里主要配置了4个地方:
- registry-mirrors :镜像改为阿里云的镜像仓库,(需要到阿里云网站申请);
- insecure-registries :配置私有镜像仓库时,配置镜像不使用 https 传输,IP 是 私有镜像仓库的IP;
- exec-opts :为了与 k8s 的默认驱动保持一致;
- log :分别配置了日志的文件格式、每个容器的最大日志文件数 和 每个日志文件的最大尺寸;
mkdir -p /etc/docker
cd /etc/docker
vim daemon.json
{
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"],
"insecure-registries": ["120.xxx.xx.174:5000"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "1"
}
}
systemctl daemon-reload
2、使 Docker 开机自启动,并启动 Docker
systemctl enable docker
systemctl status docker
systemctl start docker
3、查看配置是否生效
docker info
systemctl status docker -l
4、如果启动 Docker 后 修改了配置文件,则需要 使配置生效并重启 Docker
systemctl daemon-reload
systemctl restart docker
centos7.9 安装 Anaconda3
因为初期希望用 python 作为管理 Docker 容器的脚本,所以顺便安一下 Anaconda3;
1、从 Anaconda3 的镜像站 找到最新的镜像,并复制镜像链接:
镜像站:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
当前最新镜像链接:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2020.11-Linux-x86_64.sh
2、
mkdir /usr/software
cd /usr/software
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2020.11-Linux-x86_64.sh
bash Anaconda3-2020.11-Linux-x86_64.sh
vim /etc/profile
# 最后一行加:
export PATH="/root/anaconda3/bin:$PATH"
source /etc/profile
可能遇到的问题
endpoint with name xxx already exists in network 网络模式
docker rm -f 容器名
docker network disconnect --force 网络模式 容器名
docker network inspect 网络模式
参考资料
1、通过 kubeadm 安装 k8s
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
2、k8s 官网的 Docker 安装方法
https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/