kubernetes集群搭建

一、Docker安装( 所有节点 )

  安装kubernete首先需要安装docker。

  1、Docker 自动化脚本安装,Docker版本17.03,所有的节点都要安装Docker

curl https://releases.rancher.com/install-docker/17.03.sh | sh

    Docker 查看是否安装成功

root@yyyyy-k8s-test-xxxxx:~# docker -v
Docker version 17.03.2-ce, build f5ec1e2

  2、Docker是需要创建用户的

   Docker 命令使用 Unix socket 与 Docker 引擎通讯。只有 root 用户和 Docker 组的用户才可以访问 Docker 引擎的Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,需要使用 Docker 的用户加入 Docker用户组。

# 创建用户
useradd -G docker -m kubeusr

# 手动添加 docker 组给 kubeusr(将已有的user加入到docker组中)
usermod -a -G docker kubeusr 

  

二、K8s安装前期准备( 所有节点 )

  1、关闭selinux

   安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统,很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。在使用了 SELinux 的操作系统中,某个资源是否拥有对应用户的权限(读、写、执行)决定一个资源是否能被访问。

# 关闭 selinux
setenforce 0   

   2、关闭防火墙

systemctl stop iptables
systemctl disable iptables
systemctl stop firewalld
systemctl disable firewalld

  我的本地没有iptablefirewilld,所以这四条命令可以跳过。

   3、关闭 swap

    swap是硬盘上的一块空间,当内存不足时,可以将内存空间中的一部分数据交换到swap空间中,以达到释放内存空间的目的。硬盘的速度比内存慢太多太多了。因此swap只是对内存的一种补充,是在内存不足时对内存的扩充,但是不能代替内存使用。

    kubernetes的想法是将实例紧密包装到尽可能接近100%。 所有的部署应该与CPU /内存限制固定在一起。 所以如果调度程序发送一个pod到一台机器,它不应该使用交换。 设计者不想交换,因为它会减慢速度。关闭swap主要是为了性能考虑。

# 暂时关闭
swapoff -a 
# 永久关闭
sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab

  4、开启iptable转发

   k8s pod之间和servise之间是按照iptable的条目进行转发的。

# 开启 iptable 转发
sysctl net.bridge.bridge-nf-call-iptables=1
cat /proc/sys/net/bridge/bridge-nf-call-iptables

三、安装K8s( 所有节点   版本 10.04 )

   1、安装

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add && 
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | tee /etc/apt/sources.list.d/kubernetes.list && 
apt-get update -q && 
apt-get install -qy kubelet=1.10.4-00 kubectl=1.10.4-00 kubeadm=1.10.4-00 kubernetes-cni

    其中 https://packages.cloud.google.com/apt/doc/apt-key.gpg 是k8s的工具包 

四、初始化K8s( 主节点

   1、安装完成后,初始化k8s

    初始化这个主节点 k8s 的时候,需要一个 kubeadm-init-args.conf 文件,将这个文件在本地创建,文件内容如下,文件的格式,空格啥的别写错了不然的话可能运行不成功的:

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
apiServerExtraArgs:
  allow-privileged: "true"
  service-node-port-range: 80-32767
networking:
  podSubnet: 10.244.0.0/16

    到 kubeadm-init-args.conf 文件路径下,运行初始化命令:

kubeadm init --config kubeadm-init-args.conf

    这个命令可能需要挺长一段时间来运行,五分多钟把~,运行成功后或生成一个token, 这个tocken,一定要记下来!之后有用的。

   2、复制 k8s 配置文件到 kubeusr 用户

# 复制 k8s 配置文件到 kubeusr 用户
mkdir /home/kubeusr/.kube && 
cp /etc/kubernetes/admin.conf /home/kubeusr/.kube/config && 
chown -R kubeusr:kubeusr /home/kubeusr/.kube

    3、切换到 kubeuser 用户

# 切换到 kubeuser 用户
su - kubeusr

    4、安装 flannel 网络插件

    FlannelCoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。

# 安装 flannel 网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.10.0/Documentation/kube-flannel.yml

     5、 join 节点(在node节点上执行下列命令)

    这个步骤就用到了初始化k8s成功后生成的最后一句话,下面是我的生成做例子:

kubeadm join 9.42.16.52:6443 --token 5pxlrx.onghjohfdys4j060 --discovery-token-ca-cert-hash sha256:5a77ad4dbae75df14e17325f166ae91fdc60ea21ebbe9ffdb77db4250283d2e3

五、最后的测试

  自此,kubernetes的搭建过程算是完成了,那么我们来看一下,是不是搭建成功了!

  在master 分支下执行下面的命令:

kubectl get nodes

  如果成功的话,最后的结果应该是这个样子的:

原文地址:https://www.cnblogs.com/Lyh1997/p/10187904.html