TL;DR;
科学上网, 科学上网, 科学上网, 重要的事情说三次. 如果不会科学上网, 这篇文章就没有看下去的意义. 作为一个技术人员如果不愿意折腾, 很难有所作为. 作为一个单纯的技术人员, 最好把心思放在技术上, 做到真正的科学上网. 这里不会教如何科学上网, 请大家自行摸索.
服务器
名称 | 操作系统 | 配置 | IP |
master | CentOS 7 | 4 核 2G 内存 | 192.168.132.132 |
node1 | CentOS 7 | 2 核 2G 内存 | 192.168.132.130 |
Master 安装
1. 修改主机名为 master.
hostnamectl set-hostname master
2. 关闭防火墙和 selinux
systemctl stop firewalld
systemctl disable firewalld
vi /etc/selinux/config, 将 SELINUX=enforcing 改为 SELINUX=disabled, 重启机器
3. 安装 docker
yum install -y docker
systemctl enable docker && systemctl start docker
docker info 查看 docker 信息, 记录 docker 的版本, 以及 cgroup 信息:
Docker 从 1.13 版本开始调整了默认的防火墙规则, 禁用了 iptables filter 表中 FOWARD 链, 这样会引起 Kubernetes 集群中跨 Node 的 Pod 无法通信, 需要执行以下指令:
systemctl stop docker
iptables -P FORWARD ACCEPT
systemctl start docker
4. 设置 net.bridge.bridge-nf-call-iptables
cat <<EOF> /etc/sysctl.d/k8s.conf
- net.bridge.bridge-nf-call-ip6tables = 1
- net.bridge.bridge-nf-call-iptables = 1
- EOF
- sysctl --system
参考: https://kubernetes.io/docs/setup/independent/install-kubeadm/
5. 挂代理 (科学上网)
- export http_proxy=http://127.0.0.1:8118
- export https_proxy=http://127.0.0.1:8118
- export no_proxy="localhost, 192.168.132.132" #192.168.132.132 为 master 主机 IP
cat <<EOF> /etc/sysconfig/docker
- HTTP_PROXY='http://127.0.0.1:8118'
- HTTPS_PROXY='http://127.0.0.1:8118'
- EOF
systemctl restart docker
6. 安装 kubeadm, kubelet, kubectl
cat <<EOF> /etc/yum.repos.d/kubernetes.repo
- [kubernetes]
- name=Kubernetes
- baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
- 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 kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
7. 配置 cgroup, 使 / etc/systemd/system/kubelet.service.d/10-kubeadm.conf 中的 cgroup 的值和 docker info 中的 cgroup 一致. 然后重启 kubelet:
systemctl daemon-reload
systemctl restart kubelet
8. 更新 yum 获取最新的 kubeadm
yum update
9. 关闭系统的 Swap:
swapoff -a
10. kubeadm init, 这里选用 Calico 的网络, 因此设置 --pod-network-cidr=192.168.0.0/16.
kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.132.132
漫长等待, 下载镜像会比较耗时, 如果长时间没反应, 而且没有下载镜像的话, 可以 kubeadm reset, 重启 kubelet, 再 kubeadm init . 直到成功, 看到以下界面:
记录下加入节点的指令: kubeadm join ...
11. 设置 kubelet config
- mkdir -p $HOME/.kube
- cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
- chown $(id -u):$(id -g) $HOME/.kube/config
- export KUBECONFIG=/etc/kubernetes/admin.conf
12. 安装网络, 这里使用 Calico.
kubectl apply -f https://docs.projectcalico.org/v3.0/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml
Node 安装
按照 Master 安装的 1-9 步骤进行安装. 其中调整如下:
1. 修改主机名为 nodex(这里是 node1).
hostnamectl set-hostname node1
5. 挂代理 (科学上网)
- export http_proxy=http://127.0.0.1:8118
- export https_proxy=http://127.0.0.1:8118
- export no_proxy="localhost, 192.168.132.132, 192.168.132.130" #192.168.132.132 为 master 主机 IP,192.168.132.130 为 node1 主机 IP
cat <<EOF> /etc/sysconfig/docker
- HTTP_PROXY='http://127.0.0.1:8118'
- HTTPS_PROXY='http://127.0.0.1:8118'
- EOF
systemctl restart docker
10. 执行安装 Master 时输出的 kubeadm join ...
在 Master 上执行 kubectl get nodes 查看添加结果:
11. 给 node 打标签 (可选)
kubectl label node node1 kubernetes.io/role=node
补充说明: 拉取镜像有时会比较耗时, 请耐心等待, 相同的镜像可以考虑从 master 拷贝.
参考资料
- https://kubernetes.io/docs/setup/independent/install-kubeadm/
- https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
- https://brickyang.github.io/2017/01/14/CentOS-7-安装-Shadowsocks-客户端/
来源: https://www.cnblogs.com/Erik_Xu/p/8783789.html