kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。
这个工具能通过两条指令完成一个kubernetes集群的部署:
在三台机器上都执行一下操作
关闭防火墙:
$ systemctl stop firewalld.service
$ systemctl disable firewalld.service
关闭selinux:
$ sed -i 's/enforcing/disabled/' /etc/selinux/config #
将SELINUX=disabled 然后注释掉最后一行SELINUXTYPE=targeted
保存
关闭swap:
$ swapoff -a # 临时
$ vim /etc/fstab # 永久
注释掉最后一行,重启服务器
设置主机名,分别在3台机器上设置自己对应的主机名
$ hostnamectl set-hostname
在3台机器上添加hosts:
$ cat >> /etc/hosts << EOF
192.168.1.5 k8s-master
192.168.1.6 k8s-node1
192.168.1.7 k8s-node2
EOF
在3台机器上,将桥接的IPv4流量传递到iptables的链:
$ cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
$ sysctl --system # 生效
在3台机器上,时间同步:
$ yum install ntpdate -y
$ ntpdate ntp.tuna.tsinghua.edu.cn
在3台机器上,安装Docker
# step 1: 安装必要的一些系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
yum makecache fast
yum -y install docker-ce
# Step 4: 开启Docker服务
systemctl start docker
systemctl enable docker
在3台机器上,设置阿里云镜像容器加速
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b5xv4sjm.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
重启docker服务
在3台机器上,添加阿里云YUM软件源
$ cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
在3台机器上,安装kubeadm,kubelet和kubectl
yum install -y kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0
systemctl enable kubelet
部署Kubernetes Master
$ kubeadm init
--apiserver-advertise-address=192.168.1.5
--image-repository registry.aliyuncs.com/google_containers
--kubernetes-version v1.17.0
--service-cidr=10.96.0.0/12
--pod-network-cidr=10.244.0.0/16
由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。
使用kubectl工具
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl get nodes
安装Pod网络插件(CNI)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
注意这里面需要修改 amd64下面的镜像地址为国内的阿里源上的镜像,才能下载下来
首先使用wget 下载该文件,但是raw.githubusercontent.com 的DNS解析器可能无法解析,所以需要使用chrome浏览器或者其他浏览器下载下来
然后进行修改registry.cn-hangzhou.aliyuncs.com/yanl/flannel:v0.12.0-amd64这个镜像可以去阿里的镜像站查询到就行
然后修改为对应地址即可
然后执行kubectl apply -f kube-flannel.yml即可
查看状态 kubectl get pods -n kube-system
为Running状态即可
worker节点加入集群
在192.168.1.6和192.168.1.7执行。
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:
kubeadm join 192.168.1.5:6443 --token 6u5cka.v0tqq07ju651fqee
--discovery-token-ca-cert-hash sha256:8c4654edaeab8f6d9d6afcd239a531810ac7d4b733998a74a4b183fe2d6d2232
该命令来源是master安装后的日志中显示
查看集群节点状态 kubectl get nodes
为Ready即可
部署 Dashboard
命令地址
https://github.com/kubernetes/dashboard/releases
还是和上面一样,使用浏览器将 https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.3/aio/deploy/recommended.yaml 文件下载下来,然后修改
其中的image,上面的2个就是需要的
registry.cn-hangzhou.aliyuncs.com/inspur_containers/dashboard:v2.0.0-rc5
registry.cn-hangzhou.aliyuncs.com/kubernetes_ns/metrics-scraper:v1.0.4
这2个镜像还是可以去阿里镜像仓库去搜索到然后更改就行
默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部
访问地址:http://NodeIP:30001
创建service account并绑定默认cluster-admin管理员集群角色:
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
kubectl describe secrets -n kubernetes-dashboard $(kubectl -n kubernetes-dashboard get secret | awk '/dashboard-admin/{print $1}')
通过浏览器访问 https://192.168.1.5:30001/#/login
即可