k8s集群安装详解之Kubeadm部署安装(三)

如需转载分享,请标明出处,且不用于盈利为目的,谢谢合作!

k8s集群安装详解之Kubeadm部署安装(三)

在前两章的基础上使用Kubeadm部署安装k8s集群
环境准备

Linux虚拟机 IP
k8s-master 192.168.17.140
k8s-node1 192.168.17.141

1.设置IP、主机名映射

vi /etc/hosts
192.168.17.140 k8s-master
192.168.17.141 k8s-node1 (然后重启reboot)

2.关闭防火墙
查看防火墙状态

systemctl status firewalld

关闭防火墙

systemctl stop firewalld

关闭防火墙开机启动

systemctl disable firewalld

3.禁用SELINUX
临时关闭,用于关闭selinux防火墙,但重启后失效

setenforce 0

关闭selinux,将SELINUX=enforcing修改为disabled

vi /etc/selinux/config
SELINUX=disabled

重启系统

reboot

查看selinux的状态

/usr/sbin/sestatus

4.注释掉 SWAP 的自动挂载

vi /etc/fstab(注释/dev/mapper/centos-swap这行)

5.创建/etc/sysctl.d/k8s.conf文件,添加如下内容
关闭swap,保证 kubelet正确运行

swapoff -a

创建k8s.conf文件

vi /etc/sysctl.d/k8s.conf
#文件内容
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness=0

使其生效

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

6.kube-proxy开启ipvs的前置条件
保证在节点重启后能自动加载所需模块

cat > /etc/sysconfig/modules/ipvs.modules <

授权并加载内核模块

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

查看是否已经正确加载所需的内核模块

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

安装ipset软件包

yum install ipset

为了便于查看ipvs的代理规则,安装管理工具ipvsadm

yum install ipvsadm

7.安装Docker

yum install -y yum-utils device-mapper-persistent-data lvm2

配置yum源路径
方式一、阿里云的yum源(推荐)

yum-config-manager  --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

方式二、docker的yum源

yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo

查看可安装Docker版本

yum list docker-ce.x86_64  --showduplicates |sort -r

建立元数据缓存

yum makecache fast

安装docker,有时会因为网络问题下载有问题会报错,可以重复安装试试

yum install -y --setopt=obsoletes=0 docker-ce-18.06.3.ce-3.el7

启动docker

systemctl start docker

设置开机自启docker,否则kubeadm会报错,要求必须设置开机自启

systemctl enable docker

确认一下iptables filter表中FOWARD链的默认策略(policy)为ACCEPT

iptables -nvL

如果不是ACCEPT,则修改

iptables  -P FORWARD  ACCEPT

8.使用kubeadm部署Kubernetes
创建配置文件文件kubernetes.repo

vi /etc/yum.repos.d/kubernetes.repo

文件内容用阿里云的,也可以用其他的

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
enable=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

建立元数据缓存并安装kubelet,kubeadm,kubectl,不指定版本默认最新版本

yum makecache fast && yum install -y kubelet-1.12.1
yum makecache fast && yum install -y kubeadm-1.12.1
yum makecache fast && yum install -y kubectl-1.12.1

9.初始化集群
查看对应的镜像版本

kubeadm config images list

创建shell脚本

vi k8s.sh

脚本内容

docker pull mirrorgooglecontainers/kube-apiserver:v1.12.1
docker pull mirrorgooglecontainers/kube-controller-manager:v1.12.1
docker pull mirrorgooglecontainers/kube-scheduler:v1.12.1
docker pull mirrorgooglecontainers/kube-proxy:v1.12.1
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.2.24
docker pull coredns/coredns:1.2.2
docker tag mirrorgooglecontainers/kube-apiserver:v1.12.1 k8s.gcr.io/kube-apiserver:v1.12.1
docker tag mirrorgooglecontainers/kube-controller-manager:v1.12.1 k8s.gcr.io/kube-controller-manager:v1.12.1
docker tag mirrorgooglecontainers/kube-scheduler:v1.12.1 k8s.gcr.io/kube-scheduler:v1.12.1
docker tag mirrorgooglecontainers/kube-proxy:v1.12.1  k8s.gcr.io/kube-proxy:v1.12.1
docker tag mirrorgooglecontainers/pause:3.1  k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/etcd:3.2.24  k8s.gcr.io/etcd:3.2.24
docker tag coredns/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2
docker rmi mirrorgooglecontainers/kube-apiserver:v1.12.1
docker rmi mirrorgooglecontainers/kube-controller-manager:v1.12.1
docker rmi mirrorgooglecontainers/kube-scheduler:v1.12.1
docker rmi mirrorgooglecontainers/kube-proxy:v1.12.1
docker rmi mirrorgooglecontainers/pause:3.1
docker rmi mirrorgooglecontainers/etcd:3.2.24
docker rmi coredns/coredns:1.2.2

运行脚本,下载所需镜像

bash k8s.sh

查看本地镜像是否下载了所需镜像

docker image ls

关闭系统的Swap

vi /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS=--fail-swap-on=false

10.使用kubeadm init 初始化集群
设置kubelet服务开机自启

systemctl enable kubelet.service

#初始化集群,版本和apiserver地址写自己对应的,Swap首字母大写,不然无效

kubeadm init \
 --kubernetes-version=v1.12.1 \
 --pod-network-cidr=10.244.0.0/16 \
 --apiserver-advertise-address=192.168.17.140 \
 --ignore-preflight-errors=Swap

–apiserver-advertise-address 指明用 Master 的哪个 interface 与 Cluster 的其他节点通信。如果 Master 有多个 interface,建议明确指定,如果不指定,kubeadm 会自动选择有默认网关的 interface。

–pod-network-cidr 指定 Pod 网络的范围。Kubernetes 支持多种网络方案,而且不同网络方案对 --pod-network-cidr 有自己的要求,这里设置为 10.244.0.0/16 是因为我们将使用 flannel 网络方案,必须设置成这个CIDR

出现下列信息则表示成功,记录kubeadm join 命令,节点加入时候用到

Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of machines by running the following on each node
as root:

  kubeadm join 192.168.17.140:6443 --token puj2pk.vikiv0azxb5lvhyq --discovery-token-ca-cert-hash sha256:7ef06a337742750ae0d443627ef0eec0d1ec985976b5840eaf0cb07226df5fa4

不管是管理员还是非管理员用户,最好都运行一下,不然关机重启系统之后可能有各种错误

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

11.到这里就可以运行kubectl命令,进行查看等等操作
查看组件状态信息

kubectl get cs

获取节点信息,现在的主节点状态为NotReady,原因是没有配置网络

kubectl get nodes

12.Flannel部署
方式1在线安装:
安装的过程需要点时间,因为需要下载镜像

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created
serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.extensions/kube-flannel-ds-amd64 created
daemonset.extensions/kube-flannel-ds-arm64 created
daemonset.extensions/kube-flannel-ds-arm created
daemonset.extensions/kube-flannel-ds-ppc64le created
daemonset.extensions/kube-flannel-ds-s390x created

方式2本地安装(推荐):
如果按照上述在线安装,重新安装需要先删除所创建的网络配置

kubectl delete -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

我们有了本地的镜像文件:
链接:https://pan.baidu.com/s/1CB_iwmuiQNjoSDgMRhcqfA
提取码:hck0
复制这段内容后打开百度网盘手机App,操作更方便哦
可以使用docker load将本地保存的镜像再次导入docker中。

docker load --input flannel.tar 或 docker load < flannel.tar

导入完镜像后,执行命令

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

可以通过下列命令查看是否成功
查看quay.io/coreos/flannel镜像是否下载到本地

docker image ls

查看master节点状态是否从notReady变成Ready

kubectl get nodes

查看pods具体信息,运行的所有pod,会发现有flannel的pod

kubectl get pods -n kube-system -o wide

13.k8s-node1节点的安装步骤
(1)k8s-node1节点上操作参照上面1.到7.步骤
(2)节点加入集群
创建kubernetes.repo配置文件
可以参照上面8.步骤,也可以直接将k8s-master节点创建好的文件copy过来,copy命令如下:

scp /etc/yum.repos.d/kubernetes.repo k8s-node1:/etc/yum.repos.d/kubernetes.repo

准备镜像,这里我是将k8s-master节点上的镜像利用docker命令打包转义到k8s-node1节点
在k8s-master节点,将8个镜像打包

docker save  \
				k8s.gcr.io/kube-proxy \
				k8s.gcr.io/kube-controller-manager \
				k8s.gcr.io/kube-scheduler \
				k8s.gcr.io/kube-apiserver \
				k8s.gcr.io/etcd  \
				k8s.gcr.io/coredns  \
				quay.io/coreos/flannel   \
				k8s.gcr.io/pause \
				-o  k8s_all_image.tar

复制到k8s-node1机器上

scp k8s_all_image.tar k8s-node1:k8s_all_image.tar

切换到k8s-node1节点,导入镜像

docker load -i k8s_all_image.tar

(3)安装kubelet,kubeadm
建立元数据缓存并安装kubelet,kubeadm
kubectl命令是操作客户端,因为操作基本都在master节点,所以node节点可以不安装,要是喜欢也可以安装
不指定版本,则默认安装最新版本
k8s-node1上执行命令

yum makecache fast && yum install -y kubelet-1.12.1
yum makecache fast && yum install -y kubeadm-1.12.1

在k8s-master节点将认证文件复制到k8s-node1节点

scp /etc/kubernetes/admin.conf k8s-node1:/etc/kubernetes/admin.conf

(4)k8s-node1节点上执行命令关闭swap

vi /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS=--fail-swap-on=false

(5)k8s-node1节点上执行命令,加入集群
设置kubelet服务开机自启

systemctl enable kubelet.service

执行之前记录的join命令,加入集群

kubeadm join 192.168.17.140:6443 --token puj2pk.vikiv0azxb5lvhyq --discovery-token-ca-cert-hash sha256:7ef06a337742750ae0d443627ef0eec0d1ec985976b5840eaf0cb07226df5fa4
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

切换到k8s-master节点查看节点信息

kubectl get nodes

注意:如果k8s-node1节点加入失败,可以尝试kubeadm reset,然后重新kubeadm join一次
至此安装k8s集群完成!!!

你可能感兴趣的:(hadoop相关)