一份详尽的利用 Kubeadm部署 Kubernetes 1.13.1 集群指北

概述

Kubernetes集群的搭建方法其实有多种,比如我在之前的文章《利用K8S技术栈打造个人私有云(连载之:K8S集群搭建)》中使用的就是二进制的安装方法。虽然这种方法有利于我们理解k8s集群,但却过于繁琐。而kubeadm是Kubernetes官方提供的用于快速部署Kubernetes集群的工具,其历经发展如今已经比较成熟了,利用其来部署Kubernetes集群可以说是非常好上手,操作起来也简便了许多,因此本文详细叙述之。

节点规划

本文准备部署一个一主两从的三节点Kubernetes集群,整体节点规划如下表所示:

主机名IP角色主节点从节点从节点

下面介绍一下各个节点的软件版本:

操作系统:

Docker版本:1.13.1

Kubernetes版本:1.13.1

所有节点都需要安装以下组件:

Docker:不用多说了吧

kubelet:运行于所有Node上,负责启动容器和Pod

kubeadm:负责初始化集群

kubectl:k8s命令行工具,通过其可以部署/管理应用以及CRUD各种资源

准备工作

所有节点关闭防火墙

禁用SELINUX

setenforce0vi/etc/selinux/configSELINUX=disabled

所有节点关闭swap

swapoff-a

设置所有节点主机名

hostnamectl--staticset-hostnamek8s-masterhostnamectl--staticset-hostnamek8s-node-1hostnamectl--staticset-hostnamek8s-node-2

所有节点主机名/IP加入hosts解析

编辑/etc/hosts文件,加入以下内容:

192.168.39.79

组件安装

0安装(所有节点)

0、kubeadm、kubectl安装(所有节点)

首先准备repo

cat/etc//[kubernetes]name=KubernetesRepobaseurl=

然后执行如下指令来进行安装

setenforce0sed-i's/^SELINUX=enforcing$/SELINUX=disabled/'/etc/selinux/configyuminstall-ykubeletkubeadmkubectlsystemctlenablekubeletsystemctlstartkubelet


Master节点配置

0x01.初始化k8s集群

为了应对网络不畅通的问题,我们国内网络环境只能提前手动下载相关镜像并重新打tag:

dockerpullmirrorgooglecontainers/kube-apiserver:/kube-controller-manager:/kube-scheduler:/kube-proxy:/pause:3.1dockerpullmirrorgooglecontainers/etcd:3.2.24dockerpullcoredns/coredns:1.2.6/cp_m/flannel:/kube-apiserver:/kube-apiserver:/kube-controller-manager:/kube-controller-manager:/kube-scheduler:/kube-scheduler:/kube-proxy:/kube-proxy:/pause:3.1/pause:3.1dockertagmirrorgooglecontainers/etcd:3.2.24/etcd:3.2.24dockertagcoredns/coredns:1.2.6/coredns:1.2.6/cp_m/flannel:/coreos/flannel:/kube-apiserver:/kube-controller-manager:/kube-scheduler:/kube-proxy:/pause:3.1dockerrmimirrorgooglecontainers/etcd:3.2.24dockerrmicoredns/coredns:1.2.6/cp_m/flannel:


然后再在Master节点上执行如下命令初始化k8s集群:

kubeadminit--kubernetes-version==10.244.0.0/16

--kubernetes-version:用于指定k8s版本

--apiserver-advertise-address:用于指定使用Master的哪个networkinterface进行通信,若不指定,则kubeadm会自动选择具有默认网关的interface

--pod-network-cidr:用于指定Pod的网络范围。该参数使用依赖于使用的网络方案,本文将使用经典的flannel网络方案。

执行命令后,控制台给出了如下所示的详细集群初始化过程:

[root@localhost~]

0x02.配置kubectl

在Master上用root用户执行下列命令来配置kubectl:

echo"exportKUBECONFIG=/etc/kubernetes/"/etc/profilesource/etc/profileecho$KUBECONFIG

0x03.安装Pod网络

安装Pod网络是Pod之间进行通信的必要条件,k8s支持众多网络方案,这里我们依然选用经典的flannel方案

首先设置系统参数:

=1

然后在Master节点上执行如下命令:

一旦Pod网络安装完成,可以执行如下命令检查一下CoreDNSPod此刻是否正常运行起来了,一旦其正常运行起来,则可以继续后续步骤

kubectlgetpods--all-namespaces-owide


同时我们可以看到主节点已经就绪:kubectlgetnodes


添加Slave节点

在两个Slave节点上分别执行如下命令来让其加入Master上已经就绪了的k8s集群:

kubeadmjoin--tokentokenmaster-ip:master-port--discovery-token-ca-cert-hashsha256:hash

如果token忘记,则可以去Master上执行如下命令来获取:

kubeadmtokenlist

上述kubectljoin命令的执行结果如下:

[root@localhost~]kubectlgetpods--namespace=kube-systemNAMEREADYSTATUSRESTARTSAGEcoredns-86c58d9df4-4rds21/1Running081mcoredns-86c58d9df4-rhtgq1/1Running081metcd-k8s-master1/1Running080mkube-apiserver-k8s-master1/1Running080mkube-controller-manager-k8s-master1/1Running080mkube-flannel-ds-amd64-8qzpx1/1Running078mkube-flannel-ds-amd64-jvp591/1Running077mkube-flannel-ds-amd64-wztbk1/1Running078mkube-proxy-crr7k1/1Running081mkube-proxy-gk5vf1/1Running078mkube-proxy-ktr271/1Running077mkube-scheduler-k8s-master1/1Running080mkubernetes-dashboard-79ff88449c-v2jnc1/1Running021s

查看dashboard的外网暴露端口

kubectlgetservice--namespace=kube-systemNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)/UDP,53/:31234/TCP14

生成私钥和证书签名:

opensslgenrsa-des3-passoutpass::【如遇输入,一路回车即可】

生成SSL证书:

然后将生成的和置于路径/home/share/certs下,该路径会配置到下面即将要操作的

文件中

创建dashboard用户

文件在此

获取登陆token

kubectldescribesecret/$(kubectlgetsecret-nkube-system|grepadmin|awk'{print$1}')-nkube-system[root@k8s-master~]#kubectldescribesecret/$(kubectlgetsecret-nkube-system|grepadmin|awk'{print$1}')-nkube-systemName:admin-token-9d4vlNamespace:kube-systemLabels:noneAnnotations:/:/:a320b00f-07ed-11e9-93f2-000c2978f207Type:/service-account-tokenData====:1025bytesnamespace:11bytestoken:pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi05ZDR2bCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImEzMjBiMDBmLTA3ZWQtMTFlOS05M2YyLTAwMGMyOTc4ZjIwNyIsI_vGUe8jPMUHjKlkT7MWJ4JcQldRFY8Tdpv5GKCY25JsvT_GM3ob303r0yE6vjQdKna7EfQNO_Wb2j1Yu5UvZnWw52HhNudHNOVL_fFRKxkSVjAILA_C_HvW6aw6TG5h7zHARgl71I0LpW1VESeHeThipQ-pkt-Dr1jWcpPgE39cwxSgi-5qY4ssbyYBc2aPYLsqJibmE-KUhwmyOheF4Lxpg7E3SQEczsig2HjXpNtJizCu0kPyiR4qbbsusulH-kdgjhmD9_XWP9k0BzgutXWteV8Iqe4-uuRGHZAxgutCvaL5qENv4OAlaArlZqSgkNWw

token既然生成成功,接下来就可以打开浏览器,输入token来登录进集群管理页面:



后记

作者:CodeSheep

原文:

版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。

相关推荐