1. 准备3台虚拟机(Ubunbu18.04.4)
k8s-master: 10.0.0.211
k8s-node1: 10.0.0.212
k8s-node2: 10.0.0.213
1.1 安装Docker-ce19.03.8(Kubernetes官网举例的版本)
1.1.1 添加 Docker-ce 阿里源
1) 安装工具:
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
2) 安装证书:
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
3) 添加 docker 阿里源:
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
4) 更新软件列表:
apt-get update
5) 查询docker-ce版本:
apt-cache madison docker-ce
6) 安装docker-ce 19.03.8版本:
apt-get install -y docker-ce=5:19.03.8~3-0~ubuntu-bionic
1.1.2 修改 Docker的cgroup驱动(与kubernetes一至)
1) 创建相关目录:
mkdir -p /etc/systemd/system/docker.service.d
2) 创建daemon.json文件:
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"registry-mirrors": ["https://wgkla0w3.mirror.aliyuncs.com"]
}
EOF
3) 重启doceker服务
systemctl daemon-reload
systemctl restart docker.service
4) 确认docker服务正常
systemctl status docker.service
5) 确认docke-ce版本
1.2 安装 Kubernetes V1.18.2
1.1.1 添加 Kubernetes 阿里源
1) 安装工具:
apt-get update && apt-get install -y apt-transport-https
2) 安装证书:
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
3) 添加 kubernetes 阿里源:
cat >/etc/apt/sources.list.d/kubernetes.list<<EOF
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
4) 更新软件列表:
apt-get update
5) 安装 kubernetes v1.18.2:
apt-get install -y kubelet kubeadm kubectl
6) 确认 kubernetes 版本:
2. Master节点的搭建
2.1 查看 kubernetes v1.18.2 所需的镜像
kubeadm config images list --kubernetes-version=v1.18.2
2.2 编写拉取镜像脚本
2.3 执行脚本,pull镜像
2.4 确认所需镜像pull成功
2.5 保存Node节点所需的镜像,并分发至node节点
1) 保存镜像
docker image save -o kube-proxy.tar.gz k8s.gcr.io/kube-proxy:v1.18.2
docker image save -o pause.tar.gz k8s.gcr.io/pause:3.2
2) 分发镜像至node节点
rsync -av kube-proxy.tar.gz damin@10.0.0.212:/tmp
rsync -av pause.tar.gz damin@10.0.0.212:/tmp
rsync -av kube-proxy.tar.gz damin@10.0.0.213:/tmp
rsync -av pause.tar.gz damin@10.0.0.213:/tmp
2.6 初始化kubernetes集群
1) 初始化命令:
kubeadm init --kubernetes-version=v1.18.2 --pod-network-cidr=172.16.0.0/16 --apiserver-advertise-address=10.0.0.211
2) 根据提示创建kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3) 记下kubeadm join信息,其它节点加入Kubernetes集群时执行
kubeadm join 10.0.0.211:6443 --token 2dobh5.arnocdrun84avxhj \
--discovery-token-ca-cert-hash sha256:452d0cd2c95bcbf1538f0ec424a0ecfd25e1acb79b708d9e57d5ba9a25221d3d
4) 若初始化报错,重新reset
kubeadm reset
5) 重新初始化
kubeadm init --kubernetes-version=v1.18.2 --pod-network-cidr=172.16.0.0/16 --apiserver-advertise-address=10.0.0.211
6) 查看pods信息
kubectl get pods --all-namespaces
7) coredns 没有Running 是因为集群网络没有搭建
2.7 搭建calico 网络
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
9) 再次查看pods信息,所有pods 已经Running
2.8 安装kubernetes-dashboard UI
1) 下载dashboard的yaml文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc7/aio/deploy/recommended.yaml
2) 编辑这个文件
mv recommended.yaml dashboard.yaml
vim dashboard.yaml
3) 创建kubernetes-dashboard,并查看pods&services
kubectl create -f dashboard.yaml
kubectl get pods --all-namespaces
kubectl get services --all-namespaces
4) 创建dashboard的admin-user用户
vim dashboard-admin-user.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
5) 创建dashboard的clusterRoleBinding
vim dashboard-clusterRoleBinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
6) 执行创建
kubectl create -f dashboard-admin-user.yaml
kubectl create -f dashboard-clusterRoleBinding.yaml
7) 获取登录网页的token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret |grep admin-user| awk '{print $1}')
8) 登录网页https://10.0.0.211:30000/
输入token登录
3. Node节点接入集群
3.1 导入所需的镜像
docker image load -i kube-proxy.tar.gz
docker image load -i pause.tar.gz
3.2 确认镜像导入成功
1) Node1节点
2) Node2 节点
3.3 Node1 & Node2 节点加入集群
3.4 Master 查看所有nodes状态
4. 总结
至此所有的搭建已经完毕,搭建过程中的小问题会有出现.
比如docker的搭建,需要注意cgroup的驱动修改为systemd的模式,这是为了和kubernetes的一致,以确保整个kubernetes集群系统的编排调度更为稳定.