部署k8s详细步骤(避坑版)
一、docker部署
1.命令一键安装(公网)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
2.启动并查看docker状态
systemctl enable docker && systemctl start docker
#设置自启并启动docker
systemctl daemon-reload
#守护进程重启
systemctl restart docker
#重启docker服务
systemctl status docker
#查看docker运行状态
3.设置镜像加速(相关镜像仓库可以到阿里云开通)
vim /etc/docker/daemon.json
{
"registry-mirrors" : ["https://3inj6g9f.mirror.aliyuncs.com"]
}
4.修改docker驱动,默认是cgroup,需要改成systemd
docker info | grep Cgroup
vim /usr/lib/systemd/system/docker.service
# 在ExecStart命令中添加
--exec-opt native.cgroupdriver=systemd
systemctl daemon-reload
#重置守护进程
systemctl restart docker
#重启docker服务
docker info | grep Cgroup
#查看docker驱动
5.卸载docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
若是卸载不干净可以运行以下命令
(1)删除docker所在目录
rm -rf /etc/docker
rm -rf /run/docker
rm -rf /var/lib/dockershim
rm -rf /var/lib/docker
(2)Kill掉Docker进程
ps -ef|grep docker
kill -9 pid
(3)卸载docker相关包
yum list installed | grep docker
#查询相关包
#把匹配到的包执行 yum remove 删除
(4)查看docker是否卸载成功,为空就是卸载成功
docker version
二、k8s部署
1.配置k8s的yum源
vim /etc/yum.repos.d/kubernetes.repo
把下面内容复制进去
[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
2.安装kubectl、kubelet、kubeadm,设置kubelet开机启动,启动kubelet
yum install -y kubectl-1.20.5 kubelet-1.20.5 kubeadm-1.20.5
systemctl enable kubelet
systemctl start kubelet
3.初始化kubernetes集群(里面的版本必须对应安装的软件包版本)
kubeadm init --apiserver-advertise-address=0.0.0.0 \
--apiserver-cert-extra-sans=127.0.0.1 \
--image-repository=registry.aliyuncs.com/google_containers \
--ignore-preflight-errors=all \
--kubernetes-version=v1.20.5 \
--service-cidr=10.10.0.0/16 \
--pod-network-cidr=10.18.0.0/16
--v=5
#--v=5不添加这个可能存在版本要求大于等于5的报错
kubeadm config images list
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get node
kubectl get pod --all-namespaces
此时查看node节点为NotReady状态,因为coredns pod没有启动,缺少网络pod
4.安装calico网络
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
报错的话用下面的命令下载后运行命令
curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O
vim calico.yaml
将文件内容复制到calico.yaml里
安装好之后可以通过kubectl get pods --all-namespaces
查看pods状态
如果calico-node没有处于ready,可以通过kubectl describe pod/calico-node-cwr85 -n kube-system
查看错误信息
calico解决方法
step 1
修改网络插件vim calico.yaml
搜索 autodetect
- name: IP
value: "autodetect"
在其后面添加如下行
# 在其后面添加如下行
- name: IP_AUTODETECTION_METHOD
value: "interface=ens*"
修改之后样式
# 修改之后样式
# Auto-detect the BGP IP address.
- name: IP
value: "autodetect"
- name: IP_AUTODETECTION_METHOD
value: "interface=ens*"
step 2
搜索 v1beta1
, 移除 beta1
, 调整如下
修改前
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
修改后
apiVersion: policy/v1
kind: PodDisruptionBudget
应用
kubectl apply -f calico.yaml
- 因为calico默认是检测
Ethernet
网卡,如果服务器是ens
, 需要修改一下检测正则表达式,以致于能够找到正确的ip。 - v1beta1 修改为 v1, 意味着升级为v1版本, 不会抛出WARNNING。
5.安装部署dashboard(可视化页面)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml
vim recommended.yaml
将文件内容复制到recommended.yaml里,并用命令安装。
#设置访问端口
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard
#type: ClusterIP 改为 type: NodePort
kubectl get svc -A |grep kubernetes-dashboard
# 找到端口,在安全组放行
创建访问账号
#创建访问账号,准备一个yaml文件; vi dash.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
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
kubectl apply -f dash.yaml
#获取访问令牌
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"
6.安装metrics
vim metrics.yaml
将文件内容复制到metrics.yaml里,并用命令安装。
kubectl apply -f metrics.yaml
正常情况下master节点是运行不起来的。
原因:kubeadm集群时,出于安全考虑Pod不会被调度到Master Node上,默认情况下,master打了污点,不参与工作负载; 解决方案:手动删除master的污点;
- 查看污点信息 命令:
kubectl get no -o yaml | grep taint -A 5
- 删除master节点污点 命令
kubectl taint nodes --all node-role.kubernetes.io/master-
- 再次开启master节点污点 命令
kubectl taint nodes k8s node-role.kubernetes.io/master=true:NoSchedule
等待一会在页面查看
7.卸载k8s
yum remove -y kubelet kubeadm kubectl
kubeadm reset -f
modprobe -r ipip
lsmod
rm -rf ~/.kube/
rm -rf /etc/kubernetes/
rm -rf /etc/systemd/system/kubelet.service.d
rm -rf /etc/systemd/system/kubelet.service
rm -rf /usr/bin/kube*
rm -rf /etc/cni
rm -rf /opt/cni
rm -rf /var/lib/etcd
rm -rf /var/etcd
标签:kubectl,kubernetes,--,步骤,避坑,yaml,rf,docker,k8s
From: https://www.cnblogs.com/tcyefeng/p/16987579.html