底层走containerd容器

操作系统:openEuler-24.03   8G内存/200G硬盘
主机名:cat /etc/hosts
192.168.80.51 lyc-80-51
192.168.80.52 lyc-80-52
192.168.80.53 lyc-80-53

一、系统初始化

1、关闭防火墙

systemctl stop firewalld 
systemctl disable firewalld

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim

2、关闭selinux

vim /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_02

3、修改网络IP

vim  /etc/sysconfig/network-scripts/ifcfg-ens160

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_03

4、修改hosts文件

vim  /etc/hosts

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_04

5、修改欧拉24.03源

【方法一】【测试使用的是这个源】
1、在/etc/yum.repos.d/目录下,创建文件openEuler.repo,根据 openEuler 版本及系统架构选择配置内容。
cd /etc/yum.repos.d/
vim openEuler.repo
----------------------------
[osrepo]
name=osrepo
baseurl=https://mirrors.huaweicloud.com/openeuler/openEuler-23.09/OS/x86_64/
enabled=1

gpgcheck=1
gpgkey=https://mirrors.huaweicloud.com/openeuler/openEuler-23.09/OS/x86_64/RPM-GPG-KEY-openEuler
---------------------------
官网最新的源只有23.09的,没有24.03的源,通用的,不用担心

2、清除原有 yum 缓存
yum clean all

3、生成新的缓存
yum makecache

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_05

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_06

也可参照此源进行配置

【方法二】【我使用的是方法一】
修改openeuler 22.03x64 的源
cd  /etc/yum.repos.d/
cp  openEuler.repo  openEuler.repo.bak
vim openEuler.repo
-------------
[OS]
name=OS
baseurl=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/OS/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/OS/$basearch/RPM-GPG-KEY-openEuler

[everything]
name=everything
baseurl=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/everything/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/everything/$basearch/RPM-GPG-KEY-openEuler

[EPOL]
name=EPOL
baseurl=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/EPOL/main/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/OS/$basearch/RPM-GPG-KEY-openEuler

[debuginfo]
name=debuginfo
baseurl=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/debuginfo/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/debuginfo/$basearch/RPM-GPG-KEY-openEuler

[source]
name=source
baseurl=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/source/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/source/RPM-GPG-KEY-openEuler

[update]
name=update
baseurl=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/update/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/OS/$basearch/RPM-GPG-KEY-openEuler

[update-source]
name=update-source
baseurl=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/update/source/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/source/RPM-GPG-KEY-openEuler

---------------
yum clean all
yum makecache
【方法三】【我使用的是方法一】
添加yum源仓库
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install -y https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

更新yum源仓库
yum -y update

6、安装Epel

1、备份配置文件:
cp -a /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup

如果不存在文件epel.repo 
cd /etc/yum.repos.d/
touch epel.repo
2、修改epel.repo文件,取消baseurl开头的行的注释,并增加mirrorlist开头的行的注释。
将文件中的
http://download.fedoraproject.org/pub替换成https://mirrors.huaweicloud.com,
可以参考如下命令:
sed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/epel.repo
sed -i "s/metalink/#metalink/g" /etc/yum.repos.d/epel.repo
sed -i "s@https?://download.fedoraproject.org/pub@https://mirrors.huaweicloud.com@g" /etc/yum.repos.d/epel.repo

3、执行以下命令更新:
yum update

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_07

7、时间同步

sudo yum install chrony

vim /etc/chrony.conf 
-----------------------
添加同步服务器
server ntp1.aliyun.com  iburst

server ntp.aliyun.com iburst
stratumweight 0
driftfile /var/lib/chrony/drift
rtcsync
makestep 10 3
bindcmdaddress 127.0.0.1
bindcmdaddress ::1
keyfile /etc/chrony.keys
commandkey 1
generatecommandkey
logchange 0.5
logdir /var/log/chrony
----------------------
###查阅同步地址https://developer.aliyun.com/mirror/NTP?spm=a2c6h.13651102.0.0.5a991b11xhPhjB

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'Asia/Shanghai' > /etc/timezone

chkconfig  chronyd  on
启动系统服务chronyd,并设为开机自启
systemctl  restart  chronyd    #重启校时服务
systemctl  enable  chronyd     #开机自启

输入date  查看时间
timedatectl   ------查看2个yes,表示同步成功

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_08

8、关闭swap

swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab

查看关闭状态
cat  /etc/fstab

查看swap服务
yum install htop
htop

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_09

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_10

9、开放网络规则

iptables -P  INPUT  ACCEPT
iptables -P  FORWARD  ACCEPT
iptables -F
iptables -L  -n

查看规则
iptables -L
-------------------
Chain INPUT (policy ACCEPT)

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_11

10、安装依赖包

yum install -y htop iftopconntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

yum install -y lrzsz git subversion numactl gpm unzip wget curl net-tools gpm gcc  gcc-c++  zip unzip  make

yum -y install wget jq psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git network-scripts tar curl -y


11、开启ipvs转发

yum install ipvsadm ipset sysstat conntrack libseccomp -y
--------------------------
modprobe br_netfilter 

cat > /etc/sysconfig/modules/ipvs.modules << EOF 

#!/bin/bash 
modprobe -- ip_vs 
modprobe -- ip_vs_rr 
modprobe -- ip_vs_wrr 
modprobe -- ip_vs_sh 
modprobe -- nf_conntrack
EOF
---------------------------
chmod 755 /etc/sysconfig/modules/ipvs.modules 
bash /etc/sysconfig/modules/ipvs.modules 

-----------------------------------
重启服务
systemctl restart systemd-modules-load.service
lsmod | grep -e ip_vs -e nf_conntrack
-----------------------------------------------------

查看到以下内容
lsmod | grep -e ip_vs -e nf_conntrack
-------------------------------
ip_vs_sh               16384  0
ip_vs_wrr              16384  0
ip_vs_rr               16384  0
ip_vs                 180224  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          176128  1 ip_vs
nf_defrag_ipv6         24576  2 nf_conntrack,ip_vs
nf_defrag_ipv4         16384  1 nf_conntrack
libcrc32c              16384  3 nf_conntrack,xfs,ip_vs

--------------------------------------------
cat >> /etc/modules-load.d/ipvs.conf <<EOF 
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
EOF
-------
systemctl restart systemd-modules-load.service
lsmod | grep -e ip_vs -e nf_conntrack

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_12

提前执行以下命令,遇到过初始化k8s集群转发问题报错
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo service network restart

12、句柄数最大

ulimit -SHn 65535
cat >> /etc/security/limits.conf <<EOF
* soft nofile 655360
* hard nofile 131072
* soft nproc 655350
* hard nproc 655350
* seft memlock unlimited
* hard memlock unlimitedd
EOF
查看修改结果
ulimit -a

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_13

13、资源实现最大

vim  /etc/default/grub
添加  numa=off
---------------
查看
numactl --show

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_14

14、系统优化

cat > /etc/sysctl.d/k8s_better.conf << EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF

modprobe br_netfilter
lsmod |grep conntrack
modprobe ip_conntrack
sysctl -p /etc/sysctl.d/k8s_better.conf
-----------------------------------

#确保每台机器的uuid不一致,如果是克隆机器,
修改网卡配置文件删除uuid那一行
cat  /sys/class/dmi/id/product_uuid

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_15

15、执行shh免密

更改初始密码
echo jichao | passwd root --stdin
ssh-keygen -t rsa   敲3下回车,生成秘钥
ssh-copy-id lyc-80-51
ssh-copy-id lyc-80-52
ssh-copy-id lyc-80-53
-----------以上命令,每台机器都需要执行

也可以使用免密脚本
./fgssh -user root -hosts "lyc-80-51 lyc-80-52 lyc-80-53" -advanced -exverify -confirm

【到此,初始化已完毕,请关闭3台机器,进行快照备份!!!】

二、安装containerd

1、创建配置文件

【3台机器全部执行】
创建 /etc/modules-load.d/containerd.conf 配置文件
----------------------
cat << EOF > /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
----------------------
modprobe overlay
modprobe br_netfilter

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_16

2、配置源文件

获取阿里云YUM源
vim /etc/yum.repos.d/docker-ce.repo
------------------
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/9/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
----------------------
yum makecache

下载安装:
yum install -y containerd.io

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_17

3、配置config文件

3台机器全部执行
生成containerd的配置文件
mkdir /etc/containerd -p 
生成配置文件
containerd config default > /etc/containerd/config.toml
编辑配置文件
vim /etc/containerd/config.toml
------------
SystemdCgroup = false 改为 
【搜索】:/SystemdCgroup
SystemdCgroup = true   //第139行

sandbox_image = "k8s.gcr.io/pause:3.6"
改为:
【搜索】:/sandbox_image
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"  //第67行
-----------
设置开机启动
systemctl enable containerd
启动服务
systemctl start containerd
查看镜像,验证安装是否成功
ctr images ls

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_18

三、安装k8s 1.31.x

1、配置k8s 1.31.0版本的yum源

3台机器全部配置

1.添加阿里云YUM软件源
------------
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.31/rpm/repodata/repomd.xml.key
EOF
-------------
清除原有 yum 缓存
yum clean all
生成新的缓存
yum makecache

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_19

2、查看所有可用的版本

yum list kubelet --showduplicates | sort -r |grep 1.31

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_20

3、安装kubeadm,kubelet和kubectl

3台机器全部执行

安装
yum install -y kubectl kubelet kubeadm

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_21

会自动安装5个包,明细如下:
 containernetworking-plugins-1.2.0-3.oe2403.x86_64     
 cri-tools-1.31.1-150500.1.1.x86_64     
 kubeadm-1.31.0-150500.1.1.x86_64     
 kubectl-1.31.0-150500.1.1.x86_64    
 kubelet-1.31.0-150500.1.1.x86_64

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_22

4、配置cgroup

3台机器全部执行

为了实现docker使用的cgroupdriver与kubelet使用的cgroup的一致性,建议修改如下文件内容。
vim /etc/sysconfig/kubelet  [3台全部设置下]
---------------------
添加
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
---------------------
设置kubelet为开机自启动即可,由于没有生成配置文件,集群初始化后自动启动
systemctl enable kubelet

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_23

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_24

5、准备k8s 1.31.0镜像

kubeadm config images list --kubernetes-versinotallow=v1.31.0

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_25

6、拉取镜像

3台机器全部执行

使用以下命令从阿里云仓库拉取镜像 [3台都执行安装]
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_26

7、集群初始化

3台机器全部执行关闭swap
【再次执行关闭swap】
swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab

查看关闭状态
cat  /etc/fstab

查看swap服务
yum install htop
htop
------swap必须处于关闭状态。所以在初始化之前,必须关闭

集群初始化 【master主机51安装即可】

集群初始化 【主机51安装即可】
使用kubeadm init命令初始化

在lyc-80-51上执行,报错请看k8s报错汇总
vim kubeinit.sh
. ./kubeinit.sh
-------------------------------------
kubeadm init --kubernetes-version=v1.31.0 --pod-network-cidr=10.224.0.0/16 --apiserver-advertise-address=192.168.80.51 --image-repository registry.aliyuncs.com/google_containers
------------------------------------------
--apiserver-advertise-address 集群通告地址
--image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
--kubernetes-version K8s版本,与上面安装的一致
--service-cidr 集群内部虚拟网络,Pod统一访问入口
--pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_27

报错了,原因是ipvs转发没开成功

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_28

IP转发的问题,执行以下命令
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo service network restart
再次执行
. ./kubeinit.sh

安装成功后会有successfully!提示

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.80.51:6443 --token l02pkw.2ccruhqj9qelkv3p \
        --discovery-token-ca-cert-hash sha256:a960721267396dd59a38d67a48be7e9afb42e6730ef666926ea535ccbb65591b
/////要记住token,一会登录web管理界面会使用到token

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_29

根据提示,主节点执行下提示信息
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

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_30

8、node节点加入集群

lyc-80-52/lyc-80-53 分别执行
kubeadm join 192.168.80.51:6443 --token wp2gxv.bj3i7ous9izk1a0p \
	--discovery-token-ca-cert-hash sha256:ecf309bdb5e37c944073b394e0b582cca7ee57ffd3cf51f090fdc58db7e1af78

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_31

9、查看集群节点

# 查看集群节点:
kubectl get node

此时,因为没有安装网络组件,所以STATUS状态是NotR

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_32

3台机器关机,虚拟机快照备份下
poweroff

10、安装Calico网络插件

只在master主节点安装即可

网络组件有很多种,只需要部署其中一个即可,推荐Calico。

Calico是一个纯三层的数据中心网络方案,Calico支持广泛的平台,包括Kubernetes、OpenStack等。

Calico 在每一个计算节点利用 Linux Kernel 实现了一个高效的虚拟路由器(vRouter)来负责数据转发,
而每个 vRouter 通过 BGP 协议负责把自己上运行的 workload 的路由信息向整个 Calico 网络内传播。

此外,Calico 项目还实现了 Kubernetes 网络策略,提供ACL功能。
***************************************************
下载Calico配置文件
wget  --no-check-certificate   https://raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/calico.yaml

修改以下内容:
- name: CALICO_IPV4POOL_CIDR
value: "10.244.0.0/16"
- name: IP_AUTODETECTION_METHOD
value: "interface=ens33"   【注意网卡名字】
这里我用的是提前准备好的配置文件
还记得初始化k8s集群时填的这个地址不?
--pod-network-cidr=10.224.0.0/16
安装网络插件calico的时候,配置成这个地址才行

vim calico.yaml
---------------
注意看2个地方的配置
搜索查看文件:
:/10.224  【注意IP、网卡名,我第一次就因为网卡名没起来】
:/image   版本v3.28.0
-------------------
效果与上边wget的效果一样,只是版本不一样,最新版本v3.28.0

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_33

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_34

只在master主节点安装即可

部署calico网络
-----------------
拉取镜像
docker pull calico/cni:v3.28.0
docker pull calico/node:v3.28.0
docker pull calico/kube-controllers:v3.28.0

执行安装命令
kubectl apply -f calico.yaml

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_35

查看网络
kubectl get nodes -o wide
kubectl get pods --all-namespaces -o wide

等待几分钟查看pod情况
kubectl get pod -n kube-sysrem
kubectl get node

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_36

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_37

11、安装metrics-server服务

在master主节点执行

metrics-server主要是采集k8s集群资源信息的,类似参考linux系统中的htop命令

vim components.yaml
--------------------
注意注意以下内容
135         - --cert-dir=/tmp
136         - --secure-port=4443
137         - --kubelet-preferred-address-types=InternalIP
138         - --kubelet-use-node-status-port
139         - --metric-resolution=15s
140         - --kubelet-insecure-tls
141         image: registry.aliyuncs.com/google_containers/metrics-server:v0.6.1
142         imagePullPolicy: IfNotPresent
-------------------
执行安装
kubectl  apply  -f  components.yaml

查看pod
kubectl get pod -n kube-system

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_38

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_39

查看k8s集群资源
kubectl top node
kubectl top pod -n kube-system

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_40

11、安装dashboard控制面板

下载yaml文件,目前最新版本为v2.7.0
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

编辑文件,注意修改内容
vim recommended.yaml
--------------
spec:
 40   ports:
 41     - port: 443
 42       targetPort: 8443
 43       nodePort: 30001    //改动第43行端口为30001
 44   type: NodePort        //改动第44行端口为NodePort
 45   selector:
 46     k8s-app: kubernetes-dashboard
----------------
193       containers:
194         - name: kubernetes-dashboard
195           image: registry.cn-hangzhou.aliyuncs.com/ywflyfish/dashboard:v2.7.0     //换成国内镜像资源

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_41

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_42

在master主节点执行

启动recommended文件
kubectl apply -f recommended.yaml
-------------------
查看pod情况
kubectl get ns

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_43

13、创建dashboard用户

下载文件
wget https://raw.githubusercontent.com/cby-chen/Kubernetes/main/yaml/dashboard-user.yaml
vim dashboard-user.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
-----------------------
【说明】
用户权限传递:admin-user---->>>ClusterRole---->>>ClusterRoleBinding

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_44

在master主节点执行

创建用户权限
kubectl apply -f  dashboard-user.yaml

查看用户权限
kubectl get sa

创建用户token
kubectl create token admin-user  -n  kubernetes-dashboard

///复制token

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_45

查看pod状态
kubectl get pod -n kubernetes-dashboard

查看网络信息
kubectl get pod -n kubernetes-dashboard  -o  wide

查看deploy状态
kubectl  get  deploy  -n kubernetes-dashboard

查看ep状态
kubectl  get  ep  -n  kubernetes-dashboard

查看svc状态
kubectl  get  svc -n  kubernetes-dashboard
【注意网络数据流3次转发,类似LVS转发】

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_46

查看kube-proxy端口信息
ps -ef |grep kube-proxy    

////3台机器都可以查看到kube-proxy,说明每个IP都可以登录dashboard页面
过滤端口号
netstat -nutlp |grep 30001

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_47

14、登录dashboard页面

三台机器都可以测试登录下,能登录说明kube-proxy端口正常

登录dashboard页面
https://192.168.80.51:30001

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_48

登录dashboard页面
https://192.168.80.52:30001

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_49

登录dashboard页面
https://192.168.80.53:30001

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_50

输入token进行登录
eyJhbGciOiJSUzI1NiIsImtpZCI6IkdhX3lUVHo5OEY1WktEMDhCQnBFMUh1aVYtYmhraDhkX2tJVUhNRW56VnMifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzI1Njg4NDU1LCJpYXQiOjE3MjU2ODQ4NTUsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwianRpIjoiZTFhM2Q2YjktOWNjMC00MDY5LWI0YjgtMjU0MTg1NjEyZDA5Iiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJhZG1pbi11c2VyIiwidWlkIjoiMTJkZWE0OGEtY2FkNy00NmU0LTg2ZGYtMDM3OTlkNDZlNjc5In19LCJuYmYiOjE3MjU2ODQ4NTUsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlcm5ldGVzLWRhc2hib2FyZDphZG1pbi11c2VyIn0.bMGb7EDNTKPHtt_UrNHUKffUJjMDUEny_BIqBk1P3YXu-ur5_Cm93_2WwCLKaQgfVRXuDfdTd9MWx4lkmq1IGaJdu7fP68W5jvhuo8jOC-FPrQ6S57V18qJcbJOaxm_qskVX3wHKN_r7i3XsaRPf2ZEXxr7euwIN7BSoSrYHsEMpbx2WiTAxGndketNA6pgH-8W0772TAs2GZvdE90yTCmneRRVLMo0gBtHr0a99jiTC5m2vJn_0HwyanH_WPIb7ywY6_fLSiK6IQyMZIDpvndTMUjuNCv72io0Zj9Sh49_HLHhIIAav9b0lQr00mPIAX-AqtQUhjSptKb7rnolQLA

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_51

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_52


查看命名空间
[root@lyc-80-51 yaml]# kubectl  get  ns
NAME                   STATUS   AGE
default                Active   6h10m
kube-node-lease        Active   6h10m
kube-public            Active   6h10m
kube-system            Active   6h10m
kubernetes-dashboard   Active   54m

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_53

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_54

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_55

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_56

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_57


15、测试集群性能

部署一个nginx:

vim nginx-web.yaml 
------------
kind: Deployment      ////控制器
#apiVersion: extensions/v1beta1    ///已被弃用
apiVersion: apps/v1    【app端】
metadata:
  labels:
    app: nginx-deployment-label
  name: nginx-deployment
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-selector
  template:
    metadata:
      labels:
        app: nginx-selector
    spec:
      containers:
      - name: nginx-container
        image: registry.cn-hangzhou.aliyuncs.com/ywflyfish/nginx:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          protocol: TCP
          name: http
        - containerPort: 443
          protocol: TCP
          name: https

---------------
kind: Service    【服务端】
apiVersion: v1
metadata:
  labels:
    app: nginx-service-label
  name: nginx-service
  namespace: default
spec:
  type: NodePort
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
    nodePort: 31180
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
    nodePort: 31443
  selector:
    app: nginx-selector
------------------------

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_58

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_59

启动web文件
kubectl apply -f nginx-web.yaml

查看服务:
kubectl get pod
kubectl get pod  -o  wide
kubectl get svc

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_60

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_61

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_62

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_63

浏览器访问:
http://192.168.80.52:31180

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_64

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_65

改为3个pod试试呢?

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_66

第三十节   kubeadm安装k8s1.31.x,底层走containerd_初始化_67

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_68

第三十节   kubeadm安装k8s1.31.x,底层走containerd_配置文件_69

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_70

kubectl  get  node
kubectl  get  pod

第三十节   kubeadm安装k8s1.31.x,底层走containerd_vim_71

到此,说明k8s机器搭建正常!后续增加node节点/删除node可继续进行测验!!!!