K8S(Kubernetes)

182 阅读2分钟

1.安装之前的准备

Centos系统保证在7.0以上,我使用的centos系统为7.2(所有节点)

修改/etc/hosts文件,增加各节点的解析(所有节点)

Kubernetes版本与之对应的docker版本

2.安装基础组件

(所有节点,本次安装选择了两个节点:172.30.20.100(master)和172.30.20.127(node))

yum –y install ebtables
yum –y install socat

由于使用yum install docker安装docker时,网络质量较差,选择离线安装docker

下载安装包:

docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm(非必须)

安装docker:

yum install libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm
yum install docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
yum install docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm

启动docker:

systemctl start docker
systemctl status docker

注意docker的Cgroup的驱动是否为systemd(要和kubernetes的配置文件中的设置保持一致(安装kubernetes之后查看))

3.离线安装kubernetes(版本1.8.1)

下载离线安装包:kube-offline-install.tar.gz(上传到所有节点)

Master节点:

tar zxvf kube-offline-install.tar.gz
cd kubeadm/
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl –system
tar zxvf kube-master.tar.gz
swapoff –a
cd kube-master
docker load -i kube-master.tar
cp kube* /usr/bin
cp kubelet.service /etc/systemd/system/
mkdir /etc/systemd/system/kubelet.service.d
cp 10-kubeadm.conf /etc/systemd/system/kubelet.service.d
systemctl enable kubelet
systemctl enable docker
kubeadm init --pod-network-cidr=192.168.0.0/16 --kubernetes-version v1.8.1

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
kubectl apply -f calico.yaml

可以把上述步骤写成shell脚本执行:

Master节点安装完成

Node节点:

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl –system
yum install -y ebtables socat
tar zxvf kube-node.tar.gz
swapoff –a
cd kube-node
docker load -i kube-node.tar
cp kube* /usr/bin
cp kubelet.service /etc/systemd/system/
mkdir /etc/systemd/system/kubelet.service.d
cp 10-kubeadm.conf /etc/systemd/system/kubelet.service.d
systemctl enable kubelet
systemctl enable docker

或者把上述步骤写成shell脚本执行:

4.安装dashboard

Master节点(执行安装脚本即可)

安装过程中一定要修改:

记住下图中port端口号:31863(待会有用。也许你安装时跟我的不一样,这是正常的。)

5.在mster上添加node节点

强烈建议等待dns成功运行后再操作join

在node节点执行:

kubeadm join --token 28ed1e.adf1b288ce8d5f58 172.30.20.100:6443 --discovery-token-ca-cert-hash sha256:9b4c09571056685d020f73956e022d43d8dd22a20515f04d055e63d3cdc3e964

Master节点验证:

集群搭建完成

6.通过https协议、master外网地址、映射端口访问dashboard

7.补充:

  1. ebtables和iptables类似,都是Linux系统下网络数据包过滤的配置工具。区别在于ebtables用于对以太网帧的过滤,iptables用于对ip数据包的过滤。
  2. socat(Socket CAT)的主要特点就是在两个数据流之间建立通道;且支持众多协议和链接方式:ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,socket等。 socat是一个多功能的网络工具,可以看作是netcat的加强版。
  3. 下载地址download.docker.com/linux/cento…
  4. 下载地址download.docker.com/linux/cento…

声明:这是我在2018年做完东亚银行项目,回到公司安装的K8S,如有什么错误还请指正。