【DevOps】CentOS 7.9 安装与配置 Docker 20.10.1

安装环境


系统版本与内核版本:

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/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值