今天我们来到了最好玩的环节,就是部署我们的k8s cluster集群服务。一般的集群环境无3不成群,所以一般的最少单元我们都需要3台服务器,比如下图所示。
k8s-master是Master,k8s-node1和k8s-node2是node节点,也可以认为slave节点。
在国内使用最多的系统是centos,为了方便使用ubuntu是的,因为apt的软件库是真的很强大。
我们安装可以参考https://kubernetes.io/docs/setup/independent/install-kubeadm
注意的是,k8s的所有组件和docker镜像都放在Google自己的网站,也就被墙掉了,不过好在阿里是国内最好服务平台支持者,也是国内软件的贡献者,因为他搞阿里云服务全球第三,这些源也是提供的。需要我们自己修改
一般的企业也不会自己搭建k8s,都是买阿里云或者rander的,这里的话大概了解一下就好了
安装Dokcer 所有的节点都需要安装Docker
apt-get update && apt-get install docker.io
安装kubelet,kubeadm和kubectl
所有节点都要安装
- kubelet 运行cluster所有节点上,负责启动pod和容器
- kubeadm:用于初始化cluster
- kubectl:就是命令行控制台咯,对资源和容器进行CRUD
#使用root用户操作
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat </etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
初始化Master
kubeadm init -apiserver-advertise-address 192.168.65.120 --pod-netword-cidr=10.244.0.0/16
-apiserver-advertise-address 值得是用那个Master的那个interface与Cluster的其他节点通信。
--pod-netword-cidr 是Pod的网络范围
看到这一串内容说明创建成功,并copy操作mkidr那一部分内容。然后看到那个join的东西嘛?那个是在节点主机操作的。
k8s在初始化的时候做了一些的操作
- k8s 执行前检查
- 生成token和证书
- 生成KubeConfig文件,kubelet需要这个文件与Master通信
- 安装Master组件,会从Googel的Registry下载Docker镜像
- 安装kube-proxy和kube-dns
- k8s初始完成
- 提示配置kubectl
- 提示如何安装Pod网络
9。 提示如何注册其他节点到Cluster
配置Kubectl
## 其实就是刚刚执行成功后的那串东西
su - ubuntu
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.config $HOME/.kube/config
sudo shown $(id -u):$(id -g) $HOME/.kube/config
安装Pod 网络
要集群能工作必须安装这个,要不Pod无法进行通信,有很多网络方案,这里用到的是flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
然后我们就可以添加node1和node2的节点,拷贝刚刚init成功后的命令
kubeadm join --token d38a01.1361dsdsfdfg980 192.168.65.120:6443
我们可以通过 kubectl get nodes 来查看节点