第三课Kubernetes生产级实践-二进制方式环境搭建docker

第三课 Kubernetes生产级实践-二进制方式环境搭建docker

tags:

  • k8s
  • 慕课网

categories:

  • 二进制方式搭建

第一节 实践环境准备

1.1 服务器说明

我们这里使用的是五台centos-7.8的虚拟机三台主节点和一个从节点,具体信息如下表:

系统类型 IP地址 节点角色 CPU Memory Hostname
centos-7.8 192.168.242.136 master >=2 >=2G m1
centos-7.8 192.168.242.137 master >=2 >=2G m2
centos-7.8 192.168.242.138 master >=2 >=2G m3
centos-7.8 192.168.242.130 worker >=2 >=2G s1
centos-7.8 192.168.242.131 worker >=2 >=2G s2

1.2 系统设置(所有节点)

  1. 设置主机名。主机名必须每个节点都不一样,并且保证所有点之间可以通过hostname互相访问。
# 查看主机名
hostname
# 修改主机名
hostnamectl set-hostname <your_hostname>
# 配置host,使所有节点之间可以通过hostname互相访问
vi /etc/hosts
echo -e "\n192.168.242.136 m1\n192.168.242.137 m2\n192.168.242.138 m3\n192.168.242.130 s1\n192.168.242.131 s2" >> /etc/hosts
# <node-ip> <node-hostname>
  1. 安装依赖包
# 更新yum
yum update
# 安装依赖包
yum install -y conntrack ipvsadm ipset jq sysstat curl iptables libseccomp git vim net-tools wget
  1. 关闭防火墙、swap,重置iptables
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
# 重置iptables
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT
# 关闭swap
# 使用下面的命令对文件/etc/fstab操作,注释 /dev/mapper/centos_master-swap  swap  swap    defaults        0 0 这行
swapoff -a && sed -i 's/.*swap.*/#&/' /etc/fstab
# 关闭selinux
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 查看selinux状态
sestatus
# 关闭dnsmasq(否则可能导致docker容器无法解析域名)
service dnsmasq stop && systemctl disable dnsmasq
  1. 系统参数设置
# 制作配置文件
cat > /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_watches=89100
EOF
# 生效文件
sysctl -p /etc/sysctl.d/kubernetes.conf
# 执行sysctl -p 时出现下面的错误
# sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory
# sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory
# 解决方法:运行命令 modprobe br_netfilter 然后再执行 sysctl -p /etc/sysctl.d/kubernetes.conf
modprobe br_netfilter
# 查看
ls /proc/sys/net/bridge
bridge-nf-call-arptables bridge-nf-filter-pppoe-tagged
bridge-nf-call-ip6tables bridge-nf-filter-vlan-tagged
bridge-nf-call-iptables bridge-nf-pass-vlan-input-dev

1.3 安装docker(所有节点)

# 1. 方法一: 通过yum源的方式安装
# 创建所需目录
mkdir -p /opt/kubernetes/docker && cd /opt/kubernetes/docker
# 清理原有版本, 如果系统没有安装过跳过
yum remove -y docker* container-selinux
# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 可以查看所有仓库中所有docker版本,并选择特定版本安装:
yum list docker-ce --showduplicates | sort -r
# 安装指定版本docker, 如果不指定版本号,将安装最新版本的docker
# sudo yum install -y docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
# 示例-安装docker版本是: 19.03.8
yum install -y docker-ce-19.03.8 docker-ce-cli-19.03.8 containerd.io
# 开机启动
systemctl enable docker && systemctl start docker

# 设置参数
# 1.查看磁盘挂载
df -h
# 2.设置docker启动参数
# - 设置docker数据目录:选择比较大的分区(我这里是根目录就不需要配置了,默认为/var/lib/docker)
# - 设置cgroup driver, 防止文件驱动不一致,导致镜像无法启动(默认是cgroupfs,主要目的是与kubelet配置统一,这里也可以不设置后面在kubelet中指定cgroupfs)
# docker info 可以查看到cgroup driver的类型
cat <<EOF > /etc/docker/daemon.json
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": [
   		"https://registry.cn-hangzhou.aliyuncs.com",
   		 "https://fz5yth0r.mirror.aliyuncs.com",
          "https://dockerhub.mirrors.nwafu.edu.cn/",
          "https://mirror.ccs.tencentyun.com",
          "https://docker.mirrors.ustc.edu.cn/",
          "https://reg-mirror.qiniu.com",
          "http://hub-mirror.c.163.com/",
          "https://registry.docker-cn.com"
    ]
}
EOF
# 启动docker服务
systemctl restart docker

# daemon.json 详细配置示例
{
   
   
  "debug": false,
  "experimental": false,
  "graph": "/home/docker-data",
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": [
    "https://fy707np5.mirror.aliyuncs.com"
  ],
  "insecure-registries": [
    "hub.zy.com",
    "172.16.249.159:8082"
  ]
}
# 启动docker服务
systemctl restart docker

1.4 下载二进制文件(所有节点)

  1. 下载二进制文件
    • 官方下载地址(在CHANGELOG链接里面): https://github.com/kubernetes/kubernetes/releases
    • 点击这个:CHANGELOG/CHANGELOG-1.18.md。选择master和worker的二进制文件。
    • kubernetes-server-linux-amd64.tar.gz 主节点二进制文件
    • kubernetes-node-linux-amd64.tar.gz worker节点二进制文件
  2. 分发文件并设置好PATH
# 把文件copy到每个节点上(注意替换自己的文件目录)
# 这里也可以把wget https://github.com/coreos/etcd/releases/download/v3.2.18/etcd-v3.2.18-linux-amd64.tar.gz etcd复制过去
mkdir -p /opt/kubernetes/bin
# 复制中转换节点的master文件夹下到master节点 worker文件到worker节点
scp master/* <user>@<master-ip>:/opt/kubernetes/bin/
scp worker/* <user>@<worker-ip>:/opt/kubernetes/bin/

# 给每个节点设置PATH
echo 'PATH=/opt/kubernetes/bin:$PATH' >>~/.bashrc
# 重新登陆终端生效 或执行
source ~/.bash_profile
# 看是否可用
kubectl 

1.5准备配置文件(任意节点)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值