目的
目的是在Ubuntu 18.04 Bionic Beaver Linux上安装Kubernetes
操作系统和软件版本
- 操作系统:-Ubuntu 18.04 Bionic Beaver Linux
- 软件:-Kubernetes v1.10.0
要求
以root或通过特权访问Ubuntu系统sudo
命令是必需的。
困难
介质
情境
在本指南中,我们将配置由两个节点组成的最简单的Kubernetes集群。具有主机名的第一个节点kubernetes-master
将充当主节点。
具有主机名的第二个节点kubernetes-master
同样运行Ubuntu 18.04的系统将成为一个从属节点,只需加入Kuberneets集群即可。一旦启动Kubernetes集群并作为概念验证运行,我们将部署Nginx服务器容器。
约定
使用说明
安装Docker
第一步是在每个节点上安装docker。这包括主节点和从节点。执行以下linux命令至安装码头工人在您所有的Kubernetes节点上:
$ sudo apt install docker.io
一旦安装了Docker,请确保已启用它以在重启后启动:
$ sudo systemctl enable docker
安装Kubernetes
在此阶段,我们准备安装Kubernetes。我们再次需要在所有节点上安装Kubernetes。在所有节点(主节点和从节点)上执行以下命令以安装Kubernetes:
首先添加Kubernetes签名密钥:
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
接下来,添加Kubernetes存储库并安装Kubernetes:
注意:在撰写本文时,仅提供Ubuntu 16.04 Xenial Kubernetes存储库。替换以下xenial
与bionic
Ubuntu 18.04 Kubernetes存储库可用时,将使用代号。
$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
$ sudo apt install kubeadm
如果您的系统使用交换内存,Kubernetes将拒绝运行,因此我们需要在所有节点(主&从)上禁用交换内存:
$ sudo swapoff -a
接下来,确保所有节点都具有唯一的主机名。因此,如果您尚未这样做设置主机名到您的节点。在我们的场景中,我们将使用kubernetes-master
主机名:
$ sudo hostnamectl set-hostname kubernetes-master
和带有kubernetes-master
主机名:
$ sudo hostnamectl set-hostname kubernetes-slave
最后,值得一提的是,您所有的节点都应有一个准确的时间和日期,否则您将遇到使用无效TLS证书的麻烦。
初始化Kubernetes主服务器
现在我们准备初始化Kubernetes主节点。为此,请执行以下操作linux命令在您的主节点上:
kubernetes-master:~$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16
记下整个kubeadm join
该命令位于上述Kubernetes主节点初始化输出的底部,因为稍后将Kubernetes集群与从属节点一起加入时将使用此命令。
接下来,由于Kubernetes主节点初始化输出建议以普通用户身份执行以下波纹管命令以开始使用Kubernetes集群:
kubernetes-master:~$ mkdir -p $HOME/.kube
kubernetes-master:~$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
kubernetes-master:~$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
部署Pod网络
下一步是部署Pod网络。 Pod网络用于Kubernetes集群中节点之间的通信。为此,我们将使用Flannel Pod网络:
kubernetes-master:~$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
根据您的环境,可能需要几秒钟或一分钟才能启动整个法兰绒网络。使用kubectl
命令以确认一切就绪并准备就绪:
kubernetes-master:~$ kubectl get pods --all-namespaces
加入Kubernetes集群
现在一切都准备就绪,我们的节点即可加入Kubernetes集群。使用kubeadm join
从Kubernetes主节点初始化输出中先前检索到的命令加入您的Kubernetes集群:
kubernetes-slave:~$ sudo kubeadm join 10.1.1.9:6443 --token qdjnpd.5glu39uxr92xarsj --discovery-token-ca-cert-hash sha256:ed0684156c718caf425ceae6c85a56c05f7b49037cde3a2f1fd57430a4f58f89
在您的Kubernetes主节点上,确认该节点kubernetes-slave
现在是我们的Kubernetes集群的一部分:
kubernetes-master:~$ kubectl get nodes
在Kubernetes集群上部署服务
作为概念验证,我们现在将Nginx服务器部署到新的Kubernetes集群中。现在,在主节点上运行以下两个命令:
kubernetes-master:~$ kubectl run --image=nginx nginx-server --port=80 --env="DOMAIN=cluster"
kubernetes-master:~$ kubectl expose deployment nginx-server --port=80 --name=nginx-http
现在,您应该看到在您的从节点上部署了一个新的nginx docker容器:
kubernetes-slave:~$ sudo docker ps
要确认我们新的Nginx服务已启动并正在运行,请列出您的主节点上的所有可用服务,并使用curl
命令在您的CLUSTER IP上执行HTTP请求:
kubernetes-master:~$ kubectl get svc
kubernetes-master:~$ curl -I 10.101.230.239