@Author:By Runsen
Kubernetes 及其整个生态系统(工具、模块、插件等)均使用 Go 语言编写,从而构成一套面向 API、可高速运行的程序集合,这些程序文档精良、易于参与贡献或在其上构建应用程序。(百度百科)
那么 Kubernetes有什么用?其实很简单,Docker是部署我们的项目的容器,可是一个容器部署不够,如果在多个Linux服务器中使用Docker创建容器,这样就需要将多个Linux服务器的容器进行管理,Kubernetes就是管理Docker容器的。
那么我们正式搭建Kubernetes集群,什么是集群,就是多个Linux服务器。其实和Hadoop,elasticsearch,CDH集群差不多。比Hadoop,CDH的配置简单些。
我选用的机器是三台centos7主机,没钱买服务器。之前配置三台服务器sh免密码登录和Docker,这里不一一介绍了。
NodeName | IP地址 |
---|---|
node01 | 192.168.92.90 |
node02 | 192.168.92.91 |
node03 | 192.168.92.92 |
搭建之前,先去中文文档http://docs.kubernetes.org.cn/和英文文档https://kubernetes.io/docs参观下
第一步配源,加载下载速度,Installing kubeadm ,可以yum install ,下图就是官方文档的安装的命令
我就直接用vim创建吧,谷歌好像不好使,用阿里的
[root@node01 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.92.90 node01
192.168.92.91 node02
192.168.92.92 node03
[root@node01 ~]# vim /etc/yum.repos.d/kubernetes.repo
#########
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
[root@node01 ~]# yum install -y kubelet kubeadm kubectl
已加载插件:fastestmirror
……………………
已安装:
ubeadm.x86_64 0:1.18.2-0 kubectl.x86_64 0:1.18.2-0 kubelet.x86_64 0:1.18.2-0
作为依赖被安装:
conntrack-tools.x86_64 0:1.4.4-5.el7_7.2
cri-tools.x86_64 0:1.13.0-0
kubernetes-cni.x86_64 0:0.7.5-0
libnetfilter_cthelper.x86_64 0:1.0.0-10.el7_7.1
libnetfilter_cttimeout.x86_64 0:1.0.0-6.el7_7.1
libnetfilter_queue.x86_64 0:1.0.2-2.el7_2
socat.x86_64 0:1.7.3.2-2.el7
完毕!
[root@node01 ~]# systemctl enable docker && systemctl start docker
[root@node01 ~]# systemctl enable kubelet && systemctl start kubelet
[root@node01 ~]# kubeadm
┌──────────────────────────────────────────────────────────┐
│ KUBEADM │
│ Easily bootstrap a secure Kubernetes cluster │
│ │
│ Please give us feedback at: │
│ https://github.com/kubernetes/kubeadm/issues │
└──────────────────────────────────────────────────────────┘
接下来就是kubeadm 帮我们部署的 Kubernetes ,我这里是最新的1.18.2,你可以不指定
[root@node01 ~]# kubeadm init --apiserver-advertise-address=192.168.92.90 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.2 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
发现了报[ERROR Swap]: running with swap on is not supported. Please disable swap
那就把swap禁止,再次执行上面的命令
[root@node01 ~]# systemctl stop firewalld
[root@node01 ~]# swapoff -a
[root@node01 ~]# kubeadm init --apiserver-advertise-address=192.168.92.90 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.2 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
当你看到kubeadm join 192.168.92.90:6443 --token niim2r.u8sgcz1vybxtfs68 就说明安装成功了。
在输出的时候叫我们运行以下命令,应该是创建环境变量的。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Kubernetes安装好后,你可以在/etc/kubernetes/查看生成的目录
[root@node01 ~]# ls /etc/kubernetes/
admin.conf controller-manager.conf kubelet.conf manifests pki scheduler.conf
kubectl get nodes命令可以查看当前的nodes节点。
[root@node01 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
node01 NotReady master 4m12s v1.18.2
下面就在node02和node03 重复上面的操作
[root@node02 ~]# kubeadm init --apiserver-advertise-address=192.168.92.91 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.2 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
[root@node03 ~]# kubeadm init --apiserver-advertise-address=192.168.92.92 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.2 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
[root@node01 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
node01 NotReady master 4m12s v1.18.2
node02 NotReady <none> 4m12s v1.18.2
node03 NotReady <none> 4m12s v1.18.2
出现上面的信息集群配置成功。