centos8安装k8s

环境准备

  1. 卸载podman,centos默认安装了podman容器(不管有没有,执行下总没错),可能与docker存在冲突
sudo yum remove podman
  1. 关闭交换分区
sudo swapoff -a #临时关闭
sudo sed -i 's/.*swap.*/#&/' /etc/fstab #永久关闭交换区
  1. 禁用selinux
setenforce 0 #临时关闭
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config #永久关闭
  1. 关闭防火墙
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service

k8s安装

  1. 配置系统基本安装源(注意centos8阿里云的镜像已经没有了,需要使用下面的)
    由于centos-8 镜像已经移除了,换成这个 看这个文章 更换镜像源
  2. 添加K8s安装源
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
  1. 安装docker(如果你想安装最新版本或者1.24.0以上,忽略此步骤,跳到第4步)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 net-tools
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce

使用docker 加速

mkdir -p /etc/docker
vim /etc/docker/daemon.json
{
   "registry-mirrors" : ["https://mj9kvemk.mirror.aliyuncs.com"]
}

修改docker驱动
默认驱动是system,修改为systemd

vim /etc/docker/daemon.json
{
 "registry-mirrors" : ["https://mj9kvemk.mirror.aliyuncs.com"],
 "exec-opts":["native.cgroupdriver=systemd"]
}
systemctl daemon-reload
systemctl restart docker
  1. 由于k8s,1.24及以上版本不再使用docker,我们安装container
#下载tar.gz包
wget https://d.frps.cn/file/kubernetes/containerd/cri-containerd-cni-1.6.4-linux-amd64.tar.gz
# 上面这个地址,我下载的时候快点,也可以使用github的地址
wget https://github.com/containerd/containerd/releases/download/v1.6.4/cri-containerd-cni-1.6.4-linux-amd64.tar.gz
#我们直接让它给我们对应的目录给替换掉
tar zxvf cri-containerd-cni-1.6.4-linux-amd64.tar.gz -C /
#创建配置文件目录
mkdir /etc/containerd -p
#生成默认配置文件
containerd config default > /etc/containerd/config.toml
#默认情况下k8s.gcr.io无法访问,所以使用我提供的阿里云镜像仓库地址即可
sed -i 's/k8s.gcr.io/registry.cn-beijing.aliyuncs.com\/abcdocker/' /etc/containerd/config.toml
# 配置systemd作为容器的cgroup driver
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/' /etc/containerd/config.toml
# 启动
systemctl enable containerd --now
# 查看启动状态
systemctl status containerd
# 查看版本号
ctr version

container 安装完毕
5. 安装kubectl、kubelet、kubeadm(指定版本,截止7月4号,最新版本为1.24.2,移除了docker,我们可制定1.23.0版本安装),大家根据需要执行决定

# 安装最新版 使用命令(需要使用 containerd)
sudo yum install -y kubectl kubelet kubeadm
# 安装指定版本,使用命令(需要使用 docker)
sudo yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
sudo systemctl enable kubelet
sudo systemctl start kubelet

查看版本

kubeadm version
kubectl version --client
kubelet --version
  1. 初始化kubernetes集群
    下面 kubernetes-version的版本v1.23.0,根据上面kubeadm version,属性GitVersion,中的版本号自行修改
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.23.0 \
--service-cidr=10.10.0.0/16 \
--pod-network-cidr=10.18.0.0/16
  1. 部署
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 node
kubectl get pod --all-namespaces
  1. 安装calico网络
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
  1. 安装kubernetes-dashboard,也就是web控制面板
    下载recommended.yaml
wget https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/recommended.yaml

注意:在文件中搜索k8s-app: kubernetes-dashboard,修改当前节点的信息

# 修改文件
vim recommended.yaml
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort #添加这行
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30000    #添加这行
  selector:
    k8s-app: kubernetes-dashboard
  1. 创建pod
kubectl create -f recommended.yaml
kubectl get svc -n kubernetes-dashboard
  1. 查看是否正确启动 kubernetes-dashboard
kubectl get pod --all-namespaces

如果kubernetes-dashboard 的status一直在creatingcontainer
如果kubernetes-dashboard 的status一直在creatingcontainer或者其他状态,运行下面的命令查看当前pod的日志

kubectl describe pod dashboard-metrics-scraper-c45b7869d-2dhc4 --namespace=kubernetes-dashboard

我的问题是,一直pulling image kubernetesui/metrics-scraper:v1.0.7
然后我删除了之前pod
运行命令删除

kubectl delete -f recommended.yaml

使用docker 拉取镜像或者使用crictl,手动拉取

docker pull kubernetesui/metrics-scraper:v1.0.7
crictl pull kubernetesui/metrics-scraper:v1.0.7

如果一直处于pending状态,通过describe 命令查看,我的问题如下(在安装1.24.2的时候,出现)

  Warning  FailedScheduling  101s (x5 over 22m)  default-scheduler  0/1 nodes are available: 1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling.

执行下面命令,再等待几分钟执行 kubectl get pod --all-namespaces,查看是否都处于running状态
允许主节点参与调度

kubectl taint nodes --all node-role.kubernetes.io/control-plane-
kubectl taint nodes --all node-role.kubernetes.io/master-

使用web管理

  1. 获取token(1.23.0 版本以下方式获取token)
# 创建token
kubectl create sa dashboard-admin -n kube-system
# 授权Token访问权限
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# 获取token
ADMIN_SECRET=$(kubectl get secrets -n kube-system | grep dashboard-admin | awk '{print $1}')
DASHBOARD_LOGIN_TOKEN=$(kubectl describe secret -n kube-system ${ADMIN_SECRET} | grep -E '^token' | awk '{print $2}')
echo ${DASHBOARD_LOGIN_TOKEN}
  1. 获取token 1.24.0及以上版本,使用以下方式获取token
kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl -n kube-system get serviceaccounts |grep dashboard
#  输出:dashboard-admin                      0         21m
# 创建token
# --duration 86400s  指定token过期时间
kubectl -n kube-system create token dashboard-admin --duration 3153600000s
  1. https://ip:30000/#/login 使用上面的token登录(必须一https的方式访问)
  2. 也可以使用config文件登录
 vim /root/.kube/config

将上面生产的token放到文件最后一行
温馨提示:token前面需要和上面client代码缩进,注意空4个字符。token:后面有一个空格
在这里插入图片描述

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值