注意:k8s1.24版本以上默认使用的是container容器,不使用docker拉取镜像,本次安装k8s的1.27版本

也可安装1.24以上指定版本,根据情况修改指定第7条中container中pause的版本(现使用3.9的,但3.7也支持使用,未调研1.24-1.27的那个版本使用的3.9的,根据k8s版本查找需要镜像自行进行修改即可)

基础环境:

docker version
24.0.0

git version
2.20.1

1.永久关闭交换分区(临时的再次开机,k8s启动不了)

#永久关闭交换分区

sudo vim /etc/fstab

#noauto要求systemd启动是不自动挂载swap, 其他系统直接注释即可,deepin使用noauto

UUID=xxxxxxxxxxxxxxxxx     none            swap            defaults,pri=-2 0 0

#修改后面pri为

UUID=xxxxxxxxxxxxxxxxx     none            swap            defaults,noauto 0 0

#设置完要重启才能生成配置

reboot

2.查看并修改设置主机名

#查看主机名

hostnamectl

#修改主机名为 sumi (可不设置,根据自己喜好)

hostnamectl set-hostname sumi

#编辑/etc/hosts文件

sudo vi /etc/hosts 

#在文件末尾添加以下内容,这里只添加主机服务器,若有节点服务器按“IP 主机名”加入

172.17.0.1    sumi

注意,若为本机IP,只要本机IP发生变化k8s就需要重新安装,可以使用docker的172.17.0.1的IP

3.下载工具

#更新源

sudo apt-get update 

#下载工具

sudo apt-get install -y apt-transport-https curl

4.下载公钥,配置k8s源

使用管理员身份

su root

#下载阿里云的公钥

curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

#阿里云的源(之间配套使用阿里云即可)

cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF

5.下载 kubectl kubeadm kubelet

#再次更新

sudo apt-get update

#下载

sudo apt-get install kubectl kubeadm kubelet 

6.设置阿里云镜像加速

cat <<EOF >/etc/docker/daemon.json
{
    "registry-mirrors": [
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com"
    ]
}
EOF

7.配置container(k8s1.24以上使用containerd容器)

本次安装版本信息为

#root@sumi:/home/sumi# crictl version
Version:  0.1.0
RuntimeName:  containerd
RuntimeVersion:  1.6.21
RuntimeApiVersion:  v1

#安装

apt-get install containerd.io

#生成containerd默认配置文件(所有节点)

mv /etc/containerd/config.toml /etc/containerd/config.toml.orig
containerd config default > /etc/containerd/config.toml

#修改config.toml文件

sudo vim /etc/containerd/config.toml

修改以下

endpoint加速器
    [plugins."io.containerd.tracing.processor.v1.otlp"]
        endpoint = "https://docker.mirrors.ustc.edu.cn/" (修改)
          insecure = false
          protocol = “"
          
修改sandbox_image
    #sandbox_image = "k8s.gcr.io/pause:3.6"
        sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9" (修改)
        
修改Systemdcgroup
    [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
              IoUid = 0
              NoNewKeyring = false
              NoPivotRoot = false
              Root = ""
              ShimCgroup = ""
              SystemdCgroup = true  (修改)
              
修改root和state的路径(看硬盘情况)
    required_plugins = []
    root = "/home/containerd/root"  (可修改可不修改)
    state = "/home/containerd/state"   (可修改可不修改)
    temp = ""
    version = 2

#重启containerd

systemctl restart containerd

#设置

sudo crictl config runtime-endpoint unix:///run/containerd/containerd.sock
sudo crictl config image-endpoint unix:///run/containerd/containerd.sock

#查看container是否拉取镜像

sudo crictl image ls

8.初始化

#初始化

sudo kubeadm init --image-repository=registry.aliyuncs.com/google_containers --apiserver-advertise-address=172.17.0.1 

#若出错则使用reset重新初始化

kubeadm reset

#根据成功的提示配置

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

export KUBECONFIG=/etc/kubernetes/admin.conf

9.修改设置配置网络插件

#修改设置

sudo vim /etc/kubernetes/manifests/kube-controller-manager.yaml

增加参数:

--allocate-node-cidrs=true
--cluster-cidr=10.244.0.0/16

修改后文件内容为:

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    component: kube-controller-manager
    tier: control-plane
  name: kube-controller-manager
  namespace: kube-system
spec:
  containers:
  - command:
    - kube-controller-manager
    - --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf
    - --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf
    - --bind-address=127.0.0.1
    - --client-ca-file=/etc/kubernetes/pki/ca.crt
    - --cluster-name=kubernetes
    - --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
    - --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
    - --controllers=*,bootstrapsigner,tokencleaner
    - --kubeconfig=/etc/kubernetes/controller-manager.conf
    - --leader-elect=true
    - --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
    - --root-ca-file=/etc/kubernetes/pki/ca.crt
    - --service-account-private-key-file=/etc/kubernetes/pki/sa.key
    - --use-service-account-credentials=true
    - --allocate-node-cidrs=true
    - --cluster-cidr=10.244.0.0/16

#配置网络插件

网址下载网络插件应用

kubectl apply -f https://github.com/coreos/flannel/raw/master/Documentation/kube-flannel.yml

若github无法下载,网上搜索其他资源来源(若可以打开文件内容,可直接复制到自己新建文件下)下载到本地(如本地桌面)

sudo kubectl apply -f /home/sumi/Desktop/kube-flannel.yml

10.去除污点

#查看污点

kubectl describe nodes 主机名 | grep Taints 
结果:Taints: node-role.kubernetes.io/control-plane:NoSchedule

#去污点

kubectl taint node 主机名 污点名全称-
如
kubectl taint node sumi node-role.kubernetes.io/control-plane:NoSchedule-

成功如下

#返回:
node/shiye untainted

#再次查看  
 Taints:             <none>

#查看节点运行情况

kubectl get pod -A
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐