如何使用kubeadm在CentOS上设置Kubernetes 1.5
新版本的Kubernetes已经出了,所以在这里我们与另一个Kubernetes文章。
与Kubernetes 1. 5,Kubeadm仍处于Alpha中,建议不要在生产中使用它,因为它仍然不支持负载平衡器。
我们将要将众所周知的在线袜子店作为演示,我们将使用NoDeport公开服务。
在所有节点上安装Kubernetes 1.5
让我们为CentOS添加Kubernetes存储库:
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 EOF
添加Repo后,我们需要关闭selinux,因为它不会与kubernetes一起玩。
暂时关闭它,键入
setenforce 0
要在重新启动后持续,请使用nano编辑SELINUX配置文件:
nano /etc/selinux/config
并确保Selinux Line设置为允许或者禁用:
SELINUX=disabled
保存文件,我们可以继续安装所需的包。
yum install docker kubelet kubeadm kubectl kubernetes-cni
要在启动时启用Docker自动启动,请运行此命令:
systemctl enable docker
并立即启动它,运行以下内容。
systemctl start docker
接下来让kubelet这样做
systemctl enable kubelet systemctl start kubelet
设置群集
我们需要做的第一件事是决定我们新群集的主人。
如果显示了所有节点,则显示如上上面,接下来我们运行指定的主节点以下命令。
kubeadm init
请注意,我们无法运行此命令两次,我们需要在第二次运行之前拆除群集。
该输出与此类似:
[root@centos-01 kubernetes]# kubeadm init [kubeadm] WARNING: kubeadm is in alpha, please do not use it for production clusters. [preflight] Running pre-flight checks [preflight] WARNING: firewalld is active, please ensure ports [6443 9898 10250] are open or your cluster Jan not function correctly [init] Using Kubernetes version: v1.5.1 [tokens] Generated token: "9a6b48.b4011ffeeb237381" [certificates] Generated Certificate Authority key and certificate. [certificates] Generated API Server key and certificate [certificates] Generated Service Account signing keys [certificates] Created keys and certificates in "/etc/kubernetes/pki" [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf" [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf" [apiclient] Created API client, waiting for the control plane to become ready [apiclient] All control plane components are healthy after 105.821991 seconds [apiclient] Waiting for at least one node to register and become ready [apiclient] First node is ready after 4.505809 seconds [apiclient] Creating a test deployment [apiclient] Test deployment succeeded [token-discovery] Created the kube-discovery deployment, waiting for it to become ready [token-discovery] kube-discovery is ready after 68.003359 seconds [addons] Created essential addon: kube-proxy [addons] Created essential addon: kube-dns Your Kubernetes master has initialized successfully! You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: http://kubernetes.io/docs/admin/addons/ You can now join any number of machines by running the following on each node: kubeadm join --token=9a6b48.b4011ffeeb237381 45.55.128.42
安装POD网络并将节点添加到群集
在上面的部分中,我们初始化了群集主机,我们将使用我们将用于添加节点的令牌的最后一行命令。
但在我们这样做之前,我们需要安装POD网络。
kubectl apply -f https://git.io/weave-kube
有很多方法可以拥有Pods网络,但高于一个是最简单的。
它使用容器网络接口或者CNI,这是Linux上的网络容器的建议标准。
接下来,我们可以将节点添加到群集中,并在所有节点上运行此命令
kubeadm join --token=bb6fc2.be0345f5b02a32a0 45.55.128.42
令牌被消失,因此我们无法将节点添加到我的群集。
下一步允许允许窗口在主机上运行,不仅在节点上运行。
kubectl taint nodes --all dedicated
在此之后,我们可以检查节点以查看全部是否在线。
kubectl get nodes
安装微服务示例
我们将使用简单的微服务器来测试我们的群集。
它是袜子的在线商店。
首先,我们将添加命名空间袜子商店
kubectl create namespace sock-shop
然后我们创建服务
kubectl apply -n sock-shop -f "https://github.com/microservices-demo/microservices-demo/blob/master/deploy/kubernetes/complete-demo.yaml?raw=true"
在此之后,我们需要等待一些时间来创建Docker,然后我们可以尝试访问新。
为了访问它,我们必须知道其地址。
让我们检查服务
kubectl describe svc front-end -n sock-shop
它会给我们类似于此的输出
Name: front-end Namespace: sock-shop Labels: name=front-end Selector: name=front-end Type: NodePort IP: 10.104.11.202 Port: <unset> 80/TCP NodePort: <unset> 31500/TCP Endpoints: 10.32.0.4:8079 Session Affinity: None No events.
粗体线路被我突出显示,因为我们需要服务的端口号。
我们需要将端口号与我们一个节点的地址组合,我们将到达。