使用Kubeadm部署K8S集群详细步骤
使用Kubeadm部署K8S集群详细步骤一、集群中的虚拟机准备节点名称IP地址节点类型安装软件k8s-server192.168.116.130masterkube-apiserver kube-schduler kube-controller-manager docker flannel kubeletk8s-node192.168.116.131nodekubelet kube-proxy d
文章已同步更新到个人博客:使用Kubeadm部署K8S集群详细步骤
使用Kubeadm部署K8S集群详细步骤
一、集群中的虚拟机准备
节点名称 | IP地址 | 节点类型 | 安装软件 |
---|---|---|---|
k8s-server | 192.168.116.130 | master | kube-apiserver kube-schduler kube-controller-manager docker flannel kubelet |
k8s-node | 192.168.116.131 | node | kubelet kube-proxy docker flannel |
二、环境初始化
所有节点服务器都需要执行操作:
1、关闭防火墙
2、NetworkManager服务
3、SElinux
4、关闭swap分区
5、检查nf-call桥接功能是否开启
6、打开IP转发功能
7、设置Docker的yum源
8、设置K8S的yum源
1、关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
2、关闭SElinux
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config && setenforce 0
3、关闭swap分区
-
swapoff -a # 临时关闭,重启不生效
-
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab #永久
4、关闭NetworkManager
#service NetworkManager stop #临时关闭,重启不生效
#chkconfig NetworkManager off # 永久关闭
5、检查nf-call桥接功能 是否开启
#永久更改
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
6、打开IP转发功能
cat >> /etc/sysctl.conf <<EOF
net.ipv4.ip_forward=1
EOF
sysctl -p
7、设置docker的yum软件源
#若没有yum-config-manager命令,则执行这句命令,必要时更新一下yum,执行yum update
#yum install -y yum-utils device-mapper-persistent-data lvm2
#设置阿里源
#yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
8、设置K8S的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=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
三、所有服务器安装Docker、kubeadm、kubelet、kubectl
#yum install docker-ce -y
#yum install kubelet -y
#yum install kubeadm -y
#yum install kubectl -y
或者
#yum install docker-ce kubelet kubeadm kubectl -y
四、设置阿里Docker镜像加速(所有服务器都执行)
参考文章: http://www.tianshaojiao.com/2020/10/23/studynote/container/1667
#mkdir -p /etc/docker
#vim /etc/docker/daemon.json
输入内容:
{
"registry-mirrors": ["https://wos6ngjx.mirror.aliyuncs.com"]
}
五、启动Docker与kubelet服务(所有服务器都执行)
systemctl start docker;systemctl enable docker;systemctl enable kubelet
注意:此时K8S服务还没有启动,所以只是设置了开机自启动(systemctl enable kubelet);docker需要先启动以为后面安装k8s时,多个模块是通过容器启动的
六、初始化Master节点
在Master节点执行如下命令:
#kubeadm init --apiserver-advertise-address=192.168.116.130 --image-repository=registry.aliyuncs.com/google_containers --kubernetes-version=v1.19.3 --pod-network-cidr=172.10.0.0/16 --service-cidr=10.10.0.0/16 --ignore-preflight-errors=swap
由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址。
等待片刻后(等待时间长短取决于你的网速了),初始化结果如下:
若初始化时,出现提示swap的错误,如下所示:
那么您需要配置kubelet配置文件,设置fail-swap-on为false;
#vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="fail-swap-on=false"
根据输出提示操作:
#mkdir -p $HOME/.kube
#cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
#chown $(id -u):$(id -g) $HOME/.kube/config
节点Node加入master需要根据输出提示,执行命令
kubeadm join 192.168.116.130:6443 --token spofau.t8y924pr8mf9x0c5 \
--discovery-token-ca-cert-hash sha256:1c783c62e82060bf032692f9d235f244f0e4c4bd765ac8f9b167f3b091a1e913
默认token的有效期为24小时,当过期之后,该token就不可用了. 如果后续有nodes节点加入,解决方法如下:
#重新生成新的token
#kubeadm token create
#kubeadm token list
#获取ca证书sha256编码hash值
#openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
七、节点Node加入集群
在Node 节点执行 如下命令:
#kubeadm join 192.168.116.130:6443 --node-name 192.168.116.131 --token spofau.t8y924pr8mf9x0c5 --discovery-token-ca-cert-hash sha256:1c783c62e82060bf032692f9d235f244f0e4c4bd765ac8f9b167f3b091a1e913
如果加入失败,可能是在node上面进行过kubeadm init,需要重置一下,再重新加入
kubeadm重置命令: #kubeadm reset
八、安装网络插件(只在Master节点执行)
1、下载kube-flannel.yml文件,参考地址: http://www.tianshaojiao.com/2020/10/23/techarticles/1664
2、将下载的yml文件放到master服务器
3、修改flannel.yml文件,修改如下位置
将镜像改为: lizhenliang/flannel:v0.12.0-amd64
4、执行yml
#kubectl apply -f flannel.yml
查看集群的node状态,安装完网络工具之后,只有显示如下状态,所有节点全部都Ready好了之后才能继续后面的操作
#ps -ef|grep flannel
#kubectl get nodes
#kubectl get pods -n kube-system
只有全部都为1/1则可以成功执行后续步骤,如果flannel需检查网络情况,重新进行如下操作
kubectl delete -f kube-flannel.yml
然后重新wget,然后修改镜像地址,然后
kubectl apply -f kube-flannel.yml
九、测试集群(在Master节点执行)
#kubectl create deployment nginx --image=nginx
#kubectl expose deployment nginx --port=80 --type=NodePort
#kubectl get pods,svc
十、部署Dashboard(在Master节点执行)
1、下载kubernetes-dashboard.yaml文件,参考地址: http://www.tianshaojiao.com/2020/10/23/techarticles/1670
2、将下载的yml文件放到master服务器
3、修改kubernetes-dashboard.yaml文件,我把里面的 namespace统一改为: kube-system,也可以不用改的,但是其中必须要改的 如下所示:
4、执行yaml
#kubectl apply -f kubernetes-dashboard.yaml
5、访问页面url: https://192.168.116.130:30206,端口为上图显示的30206
6、 创建service account并绑定默认cluster-admin管理员集群角色:
#vim admin-user.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kube-system
#kubectl create -f admin-user.yaml
#vim admin-user-role-binding.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: kube-system
#kubectl create -f admin-user-role-binding.yaml
查看绑定信息:
#kubectl get clusterrolebinding
获取Token值
#kubectl -n kube-system get secret
#kubectl -n kube-system describe secret admin-user-token-4nb8c
复制Token,打开Dashboard页面,选择Token登录,填写复制好的Token信息,点击登录即可。
更多推荐
所有评论(0)