首页 > 其他分享 >部署k8s详细步骤(避坑版)

部署k8s详细步骤(避坑版)

时间:2022-12-16 16:11:06浏览次数:68  
标签:kubectl kubernetes -- 步骤 避坑 yaml rf docker k8s

部署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状态

1

如果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

等待一会在页面查看

2

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

相关文章

  • CAD三维图怎么画?CAD画三维长方体步骤
    CAD中怎么画长方体?CAD画三维图?可以实现吗?CAD软件虽常用于二维绘图,但也可以进行一些简单的三维设计,本文小编就以浩辰CAD软件为例来给大家分享一下CAD画三维图之长方体的具体......
  • 如何将TXT文件导入CAD软件中?CAD文件输入步骤
    有些新手设计师在CAD入门学习之初,想要将TXT文件直接输入到图纸上,但却不知道该如何操作?本篇CAD入门学习教程小编就以浩辰CAD软件为例来给大家分享一下将TXT文件直接输入到CA......
  • Linux升级至glibc-2.14步骤
    Linux升级至glibc-2.14步骤查看gcc版本命令:strings/lib64/libc.so.6|grepGLIBC_glibc安装首先,点击此处下载glibc2.14下载,得到glibc-2.14.tar.gz使用如下命令解......
  • 七个步骤覆盖 API 接口测试
    接口测试作为最常用的集成测试方法的一部分,通过直接调用被测试的接口来确定系统在功能性、可靠性、安全性和性能方面是否能达到预期,有些情况是功能测试无法覆盖的,所以接口......
  • 【云原生 | Kubernetes篇】自建高可用k8s集群搭建
    文末有惊喜文章目录​​自建高可用k8s集群搭建​​​​一、所有节点基础环境​​​​1、环境准备与内核升级​​​​2、安装Docker​​​​二、PKI​​​​三、证书工具准备......
  • Kubernetes(k8s) kubectl rollout resume常用命令
    kubectl在$HOME/.kube目录中查找一个名为config的配置文件。可以通过设置KUBECONFIG环境变量或设置--kubeconfig参数来指定其它kubeconfig文件。本文主要介绍K......
  • 3.整合MyBatis 3.1整合步骤
    第一步,按照第2.2节中的内容创建SpringBoot项目,项目创建完成之后打开pom.xml,添加如图3.1所示依赖  如图3.1    图中mybatis-spring-boot-starter是与MyBati......
  • 创建脚手架详细步骤(以及过程中遇到问题)
    1.进入cmd2.输入:npmconfigsetregistryhttps://regitry.npm.taobao.org(出现下载比较慢所以先使用该命令)3.输入:npminstall-g@vue/cli4.如果要是遇到npm找不到的......
  • k8s创建MySQL
    Kubernetes创建MysQL整体流程:创建数据存储PV、PVC;创建MySQL数据库、创建访问入口Service;导入测试数据库test-db创建数据存储PV、PVC这里我们使用nfs作为storageclass......
  • ocelot + consul 保姆级快速上手及遇到的坑,只讲步骤不讲原理
    本文只讲步骤不讲原理,先搭建成功再自行找资料看具体配置是什么意思!环境:win10,vs2022,.net6,neget包(Ocelot和Ocelot.Provider.Consul皆为18.0.0版本,Consul1.6.10.8版本),co......