Kubernetes是谷歌开源的用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制,本文主要讲解如何通过kubeadm部署k8s集群

文章概述简介

首先简单说一下本文需要做哪些内容,先准备2台服务器(这里选用centos7)作为2个节点node1(192.168.2.130)以及node2(192.168.2.131),然后选择node1作为k8s的master节点、node2做k8s的workNode节点

一、系统配置

1.准备主机(192.168.2.130、192.168.2.131)

2.修改主机名使得2个节点执行命令:cat /etc/hosts后展示如下

192.168.2.130 node1
192.168.2.131 node2

3.开放端口(或关闭防火墙)

4.关闭Swap分区

vim /etc/fstab
注释/dev/mapper/centos-swap swap swap defaults 0 0这一行

5.禁用SELinux,让容器可以读取主机文件系统

vim /etc/sysconfig/selinux
将SELINUX=enforcing修改成SELINUX=disabled,重启linux

6.准备k8s.conf文件

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness=0
EOF

modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf

二、Docker安装

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

查找版本号由高到低排序:yum list docker-ce –showduplicates | sort -r
安装命令:sudo yum install docker-ce-<VERSION_STRING>
如:(sudo yum install docker-ce-18.09.6 -y)

三、安装kubeadm、kubelet、kubectl

1.配置yum源

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
EOF

2.yum install(安装指定版本)

yum install -y kubelet-1.14.0 kubeadm-1.14.0 kubectl-1.14.0 –disableexcludes=kubernetes

3.设置kubelet和docker开启自启

systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet

四、下载k8s相关镜像

1.获取并修改kubeadm init默认配置参数

kubeadm config print init-defaults > init-config.yaml
vim init-config.yaml
advertiseAddress: 192.168.2.130(设置本机ip)
serviceSubnet: 10.210.0.0/16(自定义网段)
imageRepository: docker.io/dustise(修改镜像地址)

2.下载所需镜像

kubeadm config images pull –config=init-config.yaml

五、初始化master节点及安装网络插件

1.初始化

kubeadm init –config=init-config.yaml

2.复制配置文件到普通用户目录下

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

3.安装网络插件

kubectl apply -f “https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d ‘\n’)

4.weave插件所需端口

firewall: TCP 6783 and UDP 6783/6784.

5.验证k8s集群是否安装完成

kubectl get pods –all-namespaces

若有错误状态的pod,可以查看某个pod的描述,查看错误原因
kubectl –namespace=kube-system describe pod <pod-Name>

6.(补充)

1.若安装失败,可以执行kubeadm reset命令将主机恢复原状,重新执行kubeadm init再次安装

2.master节点默认不参与工作负载,如果希望安装一个单节点k8s集群,可以执行以下命令让master成为一个node

kubectl taint nodes –all node-role.kubernetes.io/master-

六、workNode节点安装

1.执行以上一、二、三步骤,端口只需开放workNode所需端口

2.需要等第五步第5点确认验证master安装完成再join节点

kubeadm join masterIp:6443 –token 查询到的token –discovery-token-ca-cert-hash sha256:查询到的SHA256加密字符串

3.复制node节点配置文件到普通用户目录下(之后节点就可以执行kubectl相关命令)

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/kubelet.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

七、查看tonken和Kubernetes认证的SHA256加密字符串(token24小时过期需要重新create)

1)kubeadm token list
2)openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed ‘s/^.* //’

小结

至此,k8s集群应该已经运行起来了,可以通过kubectl get nodes查看各个节点的状态,allReady is ok!