基于k8s v1.12.2版本
准备工作
创建服务器的时候,系统盘不要小于50G,另外再分配个不小于100G的独立硬盘,内存不要小于16G(master节点配置可以适当调低,内存8G,硬盘20G+20G)
- 关闭selinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
- 关闭swap
使用free指令查看系统swap是否有开启,如果开启了,编辑 /etc/fstab,直接删除掉swap列
- 给docker分配独立硬盘
mkdir -p /var/lib/docker
fdisk -l
fdisk /dev/vdb # n p 3个回车 w
mkfs.ext4 /dev/vdb1
cat << EOF >> /etc/fstab
/dev/vdb1 /var/lib/docker ext4 defaults 1 1
EOF
mount -a
- 内核参数修改
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
- 防火墙端口开放
主节点(Master)
协议 | 方向 | 端口范围 | 用途 | 使用者 |
---|---|---|---|---|
TCP | 入方向 | 6443 | k8s API server | 所有 |
TCP | 入方向 | 2379-2380 | etcd | kube-apiserver, etcd |
TCP | 入方向 | 10250 | kubelet | 自己 |
TCP | 入方向 | 10251 | kube-scheduler | 自己 |
TCP | 入方向 | 10252 | kube-controller-manager | 自己 |
工作节点(Worker)
协议 | 方向 | 端口范围 | 用途 | 使用者 |
---|---|---|---|---|
TCP | 入方向 | 10250 | kubelet | 自己 |
TCP | 入方向 | 30000-32767 | Service | 所有 |
一般生产环境可以简单的关闭防火墙来开放接口,最后通过云管理平台来约束物理节点的端口访问
service firewalld stop
systemctl disable firewalld
安装 kubeadm, kubelet, kubectl
kubeadm
: 用来创建集群的工具,随k8s版本升级,易用性会越来越强kubelet
: 以服务模式运行,可以理解为k8s在物理节点上的代理,k8s通过它来控制分配在节点上的所有容器kubectl
: 日常和k8s对话的工具
# 设置一个临时环境变量PROXY,方便下面的脚本配置,小技巧,实际操作请换成自己的实际代理IP
export PROXY=http://192.168.0.127:8118/
# yum加代理
cat << EOF >> /etc/yum.conf
proxy=$PROXY
EOF
# docker加代理
mkdir /etc/systemd/system/docker.service.d
cat << EOF > /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=$PROXY"
EOF
# 创建k8s.repo
cat << EOF > /etc/yum.repos.d/k8s.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
# 安装
yum install -y docker kubelet kubeadm kubectl
systemctl enable docker kubelet
奇淫技巧:镜像国内加速(不保证能加速到最新版的k8s)
cat <<EOF > /etc/yum.repos.d/k8s.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
cat >/etc/sysconfig/kubelet<<EOF
KUBELET_EXTRA_ARGS="--pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1"
EOF
安装成功以后,打一个基础镜像,后面的物理节点直接克隆镜像