一、安装一些常用的包

以下列举一些我常用的包:

  1. yum install -y net-tools vim git gcc bash-completion yum-utils device-mapper-persistent-data lvm2

包括以下包:

  • vim
  • git
  • gcc
  • net-tools (包括 ifconfig、route、netstat、arp)
  • bash-completion
  • yum-utils (包括 yum-config-manager)
  • device-mapper-persistent-data
  • lvm2

keepalived

  1. yum install -y keepalived
  2. systemctl enable keepalived && systemctl restart keepalived

二、配置网络

将 IP 设置为静态 IP

每一台都配置, 修改以下文件:

  1. vim /etc/sysconfig/network-scripts/ifcfg-ens33

依次修改几台虚拟机:

  1. BOOTPROTO="static"
  2. IPADDR=192.168.1.128 # 依次配置为静态IP
  3. NETMASK=255.255.255.0
  4. GATEWAY=192.168.1.1
  5. DNS1=114.114.114.114
  6. DNS2=1.2.4.8
  7. ZONE=public

GATEWAY 配置为自己的网关, DNS 可以使用运营商的 DNS, 也可使用公共 DNS

配置好之后, 重启网络:

  1. systemctl restart network

主机互信

所有节点配置 hosts,添加主机名,使三台机子能够互通:

  1. $ cat <<EOF >> /etc/hosts
  2. 192.168.1.128 k8s-master1
  3. 192.168.1.131 k8s-node1
  4. 192.168.1.132 k8s-node2
  5. 192.168.1.133 k8s-node3
  6. 192.168.1.134 k8s-node4
  7. EOF

SSH 证书分发:

  1. ssh-keygen -t rsa
  2. for i in k8s-node1 k8s-node2 k8s-node3 k8s-node4 k8s-node5;do ssh-copy-id -i .ssh/id_rsa.pub $i;done

测试互通性:

ping k8s-master1
# 或
ssh k8s-master1

三、关闭Swap分区

Kubernetes 1.8 开始要求关闭系统的 Swap,如果不关闭,默认配置下 kubelet 将无法启动。

  • 方法一,通过 kubelet 的启动参数 --fail-swap-on=false 更改这个限制。
  • 方法二,关闭系统的 Swap。

临时关闭:

swapoff -a

永久关闭, 修改 /etc/fstab 文件,注释掉 SWAP 的自动挂载,使用 free -m 确认 swap 已经关闭。

#注释掉swap分区
sed -i 's/.*swap.*/#&/' /etc/fstab

$ cat /etc/fstab
#/dev/mapper/centos-swap swap                    swap    defaults        0 0

$ free -m
              total        used        free      shared  buff/cache   available
Mem:            962         154         446           6         361         612
Swap:             0           0           0

四、禁用 SELinux

临时生效:

setenforce 0

要使其永久生效, 编辑文件 /etc/selinux/config,将 SELINUX 修改为 disabled,如下:

$ vim /etc/selinux/config
SELINUX=disabled
$ sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
#SELINUX=disabled

五、关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

六、其他配置

配置内核参数,将桥接的IPv4流量传递到iptables的链:

$ cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

是配置生效:

$ sysctl --system
* Applying /etc/sysctl.d/k8s.conf ...
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

六、检查 Docker 的安装情况

检查系统是否已经安装 Docker,若已安装不符合规格的版本, 需要将其卸载:

$ rpm -qa | grep docker
docker-client-1.13.1-94.gitb2f74b2.el7.centos.x86_64
docker-common-1.13.1-94.gitb2f74b2.el7.centos.x86_64
docker-1.13.1-94.gitb2f74b2.el7.centos.x86_64

rpm -e docker-client-1.13.1-94.gitb2f74b2.el7.centos.x86_64 docker-common-1.13.1-94.gitb2f74b2.el7.centos.x86_64 docker-1.13.1-94.gitb2f74b2.el7.centos.x86_64

注: 本文撰写时使用的是 Docker version 18.06.1-ce

七、安装Docker

在开始之前,我们先对系统进行一整套的换源操作,以保证后续操作能正常进行。

使用yum-config-manager自动配置:

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast

配置好之后,就可以安装Docker了:

yum install -y docker-ce

设置docker镜像源:

$ mkdir -p /etc/docker
$ tee /etc/docker/daemon.json <<-'EOF'
{
  "exec-opts":["native.cgroupdriver=systemd"],
  "registry-mirrors": [
    "https://xxx.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "https://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
EOF
[root@master01 ~]# systemctl daemon-reload
[root@master01 ~]# systemctl restart docker

docker 基本操作:

systemctl start docker # 启动
systemctl stop docker # 关闭
systemctl enable docker # 开机自启
systemctl restart docker # 重启

docker 基本信息:

docker -v
docker info

docker-compose

yum install -y docker-compose