在建立好kubelet的配置后,下一步我们就可以安装Kubernetes主节点了。用kubeadm初始化主节点时,必须提供一个CIDR地址(CIDR地址是为pod的网络分配的一个ip范围)。务必不要让这个ip地址和内部网络环境冲突或者重叠。
注意:如果你后续想用flannel或者calico配置CNI网络,必须设置为
--pod-network-cidr 10.244.0.0/16
。
sudo kubeadm init --pod-network-cidr 10.244.0.0/16 --ignore-preflight-errors=all
在执行以上命令后,Kubernetes master和kubelet都会运行在这个节点上。最终,一个部署在单节点上的Kubernetes集群就搭建好了。
在进一步体验Kubernetes的服务之前,用户必须在主节点上执行三个命令:
mkdir -p ~/.kube
sudo cp -i /etc/kubernetes/admin.conf ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config
另外,在上一步执行命令的输出结果中,能获取到以下信息(注意:在你的环境中,$token ${master_ip:port} $ca-cert将是详细的内容,只需要复制这个命令就好):
kubeadm join --token $token ${master_ip:port} --discovery-token-ca-cert-hash $ca-cert
以上命令kubeadm join
供除master节点的任何节点使用,通过这个命令可以加入Kubernete集群成为slave。只需要在集群中的slave节点上执行这个命令就好。
注意:Kubernetes安装部分并不包括CNI网络部分。建立CNI网络是一个独立的部分,请参考Setup CNI network。
在安装好PouchContainer和Kubernetes后,用户可以创建一个运行的pod来验证集群的正确性。以下的例子创建了一个仅包含一个busybox容器的简单pod。如果我们观察到这个pod是运行状态的,这意味着你已经成功地部署了 Kubernetes+PouchContainer。
$ cat busybox.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: example
spec:
replicas: 1
selector:
matchLabels:
pouch: busybox
template:
metadata:
labels:
pouch: busybox
spec:
containers:
- name: busyboxx
image: docker.io/library/busybox:latest
command:
- top
hostNetwork: true
$ sudo kubectl apply -f busybox.yaml
deployment.apps "example" created
$ sudo kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
example-96b47ff48-45j2f 1/1 Running 0 5m 10.140.0.2 master