k8s 1.22.4 kubeadm 部署

丈夫欲遂平生志,一载寒窗一举汤。这篇文章主要讲述k8s 1.22.4 kubeadm 部署相关的知识,希望能为你提供帮助。
k8s 1.22.4 最新版本 kubeadm 部署标签(空格分隔): kubernetes系列
[toc]
一: 系统环境初始化 1.1 系统环境

cat /etc/hosts ---- 172.16.10.11 flyfishsrvs01 172.16.10.12 flyfishsrvs02 172.16.10.13 flyfishsrvs03 172.16.10.14 flyfishsrvs04 172.16.10.15 flyfishsrvs05 172.16.10.16 flyfishsrvs06 172.16.10.17 flyfishsrvs07 ----- 先安装单master版本后续扩容成多master 系统关闭firewalld/selinux /清空iptables防火墙规则

1.2 升级系统内核
所有机器都要升级内核#查看当前内核版本 uname -r uname -a cat /etc/redhat-release #添加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#查看可用的系统内核包 yum --disablerepo="*" --enablerepo="elrepo-kernel" list available#安装内核,注意先要查看可用内核,我安装的是5.4版本的内核 yum --enablerepo=elrepo-kernel install kernel-lt#查看目前可用内核 awk -F\\ $1=="menuentry " {print i++ " : " $2} /etc/grub2.cfg#使用序号为0的内核,序号0是前面查出来的可用内核编号 grub2-set-default 0#生成 grub 配置文件并重启 grub2-mkconfig -o /boot/grub2/grub.cfg reboot

k8s 1.22.4 kubeadm 部署

文章图片

k8s 1.22.4 kubeadm 部署

文章图片

k8s 1.22.4 kubeadm 部署

文章图片

1.2 环境配置
#修改时区,同步时间 yum install chrond -y vim /etc/chrony.conf ----- ntpdate ntp1.aliyun.com iburst ----- ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo Asia/Shanghai > /etc/timezone#关闭防火墙,selinux systemctl stop firewalld systemctl disable firewalld sed -i s/enforcing/disabled/ /etc/selinux/config setenforce 0## 关闭swapswapoff -a sed -ri s/.*swap.*/#& / /etc/fstab#系统优化 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 net.ipv4.tcp_tw_recycle=0 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 sysctl -p /etc/sysctl.d/k8s_better.conf#确保每台机器的uuid不一致,如果是克隆机器,修改网卡配置文件删除uuid那一行 cat /sys/class/dmi/id/product_uuid

二: 安装docker
安装docker# 这里介绍yum源安装1. 卸载旧版本yum remove docker \\ docker-client \\ docker-client-latest \\ docker-common \\ docker-latest \\ docker-latest-logrotate \\ docker-logrotate \\ docker-engine \\ docker-cerm -rf /var/lib/docker 2.安装必备软件包yum install -y yum-utils \\ device-mapper-persistent-data \\ lvm2 3.设置yum源#建议使用阿里源 yum-config-manager \\ --add-repo \\ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#官方源 yum-config-manager --add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 4.安装docker这里介绍两种安装方式,我是用的是第一种1)使用yum命令安装#查看可用版本 yum list docker-ce --showduplicates | sort -r#安装18.09.1的版本,安装其他版本照套格式就行 yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io#安装最新版本 yum install -y docker-ce docker-ce-cli containerd.iovim /etc/docker/daemon.json ----- { "exec-opts": [ "native.cgroupdriver=systemd" ], "log-driver": "json-file", "log-level": "warn", "log-opts": { "max-size": "1000m", "max-file": "3" }, "registry-mirrors": [ "https://b9pmyelo.mirror.aliyuncs.com" ], "insecure-registries": [], "selinux-enabled": false } ------2)使用shell脚本安装使用官方提供的shell脚本安装,脚本会自动检测系统信息并进行配置。#安装最新版本docker curl -fsSL https://get.docker.com/ | sh #或者 wget -qO- https://get.docker.com/ | sh#安装尝鲜版本,但不稳定容易原地爆炸 curl -fsSL https://test.docker.com/ | sh#下载Docker安装包 https://hub.docker.com/search?offering=community& q=& type=edition 3)启动docker#加入开机启动项、启动docker systemctl enable docker systemctl start docker#验证 docker run hello-world docker version

k8s 1.22.4 kubeadm 部署

文章图片

三:安装k8s1.22.4 3.1 增加阿里云源
1.添加阿里云YUM软件源cat < < EOF > /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 EOFwget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/CentOS-Base.repo wget http://mirrors.aliyun.com/repo/epel-7.repo -O /etc/yum.repos.d/epel.repo

3.2 安装kubeadm,kubelet和kubectl
安装kubeadm,kubelet和kubectl目前最新版本是1.22.4,我们直接上最新版yum install -y kubectl-1.22.4 kubelet-1.22.4 kubeadm-1.22.4 systemctl enable kubelet

k8s 1.22.4 kubeadm 部署

文章图片

3.3 初始化 部署Master节点
部署Master节点# 初始化有如下两种方式方式一:使用kubeadm init命令初始化在k8s-Master01上执行,报错请看k8s报错汇总kubeadm init \\ --apiserver-advertise-address=172.16.10.11 \\ --image-repository registry.aliyuncs.com/google_containers \\ --kubernetes-version v1.22.4 \\ --service-cidr=10.96.0.0/12 \\ --pod-network-cidr=10.244.0.0/16 \\ --ignore-preflight-errors=all--apiserver-advertise-address 集群通告地址 --image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址 --kubernetes-version K8s版本,与上面安装的一致 --service-cidr 集群内部虚拟网络,Pod统一访问入口 --pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致 --ignore-preflight-errors=all 忽略一些检查错误

k8s 1.22.4 kubeadm 部署

文章图片

k8s 1.22.4 kubeadm 部署

文章图片

k8s 1.22.4 kubeadm 部署

文章图片

scp /etc/docker/daemon.json root@172.16.10.12:/etc/docker/ scp /etc/docker/daemon.json root@172.16.10.13:/etc/docker/

【k8s 1.22.4 kubeadm 部署】
k8s 1.22.4 kubeadm 部署

文章图片

node 节点重启docker service docker restart

k8s 1.22.4 kubeadm 部署

文章图片

k8s 1.22.4 kubeadm 部署

文章图片

flyfishsrvs02,flyfishsrvs03 节点加入kubeadm join 172.16.10.11:6443 --token alp562.cpgysql4occ4a1nv \\ --discovery-token-ca-cert-hash sha256:c5afaeff1d3f0bd31caeb5cc7876691e6efdcc4030030af151990a8f845f2cb4

k8s 1.22.4 kubeadm 部署

文章图片

k8s 1.22.4 kubeadm 部署

文章图片

k8s 1.22.4 kubeadm 部署

文章图片

kubectl get cs

k8s 1.22.4 kubeadm 部署

文章图片

关于报错: Get "https://127.0.0.1:10257/healthz": dial tcp 127.0.0.1:10257: connect: connection refused

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

k8s 1.22.4 kubeadm 部署

文章图片

k8s 1.22.4 kubeadm 部署

文章图片

kubectl get cs

k8s 1.22.4 kubeadm 部署

文章图片

3.4 安装容器网络
网络组件有很多种,只需要部署其中一个即可,推荐Calico。Calico是一个纯三层的数据中心网络方案,Calico支持广泛的平台,包括Kubernetes、OpenStack等。Calico 在每一个计算节点利用 Linux Kernel 实现了一个高效的虚拟路由器( vRouter) 来负责数据转发,而每个 vRouter 通过 BGP 协议负责把自己上运行的 workload 的路由信息向整个 Calico 网络内传播。此外,Calico 项目还实现了 Kubernetes 网络策略,提供ACL功能。1.下载Calicowget https://docs.projectcalico.org/manifests/calico.yaml --no-check-certificatevim +3878 calico.yaml ... - name: CALICO_IPV4POOL_CIDR value: "10.244.0.0/16" ...

k8s 1.22.4 kubeadm 部署

文章图片

kubectl apply -f calico.yaml

k8s 1.22.4 kubeadm 部署

文章图片

kubectl get pods -n kube-system

k8s 1.22.4 kubeadm 部署

文章图片

k8s 1.22.4 kubeadm 部署

文章图片

kubectl get node

k8s 1.22.4 kubeadm 部署

文章图片

k8s 1.22.4 kubeadm 部署

文章图片

3.5 部署dashboard
1.下载yaml文件官网下载地址目前最新版本为v2.4.0wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yamlvim recommended.yaml ---- kind: Service apiVersion: v1 metadata: labels: k8s-app: kubernetes-dashboard name: kubernetes-dashboard namespace: kubernetes-dashboard spec: ports: - port: 443 targetPort: 8443 nodePort: 30001 type: NodePort selector: k8s-app: kubernetes-dashboard ---- kubectl apply -f recommended.yamlkubectl get pods -n kubernetes-dashboard kubectl get pods,svc -n kubernetes-dashboard

k8s 1.22.4 kubeadm 部署

文章图片

k8s 1.22.4 kubeadm 部署

文章图片

k8s 1.22.4 kubeadm 部署

文章图片

# 创建用户 kubectl create serviceaccount dashboard-admin -n kube-system# 用户授权 kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin# 获取用户Token kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk /dashboard-admin/{print $1})

k8s 1.22.4 kubeadm 部署

文章图片

http://172.16.10.11:30001

k8s 1.22.4 kubeadm 部署

文章图片

kubectl create deployment nginx --image=nginxkubectl expose deployment nginx --port=80 --type=NodePort

k8s 1.22.4 kubeadm 部署

文章图片

k8s 1.22.4 kubeadm 部署

文章图片

这里的警告表示在v1.19+版本,该命令要被弃用了这里的cs是缩写,全称是componentstatuses,意为组件状态该命令是查看k8s资源,k8s资源有很多,resources意为资源 kubectl api-resources | more

k8s 1.22.4 kubeadm 部署

文章图片

第一列是资源的名字第二列是缩写第三列是API组第四列是否支持命名空间

查看api代理的URL kubectl cluster-info

k8s 1.22.4 kubeadm 部署

文章图片

查看集群详细信息 kubectl cluster-info dump |more

k8s 1.22.4 kubeadm 部署

文章图片

信息很多,以json格式输出的,一般很少使用,常用的如下 kubectl describe node flyfishsrvs01

k8s 1.22.4 kubeadm 部署

文章图片

kubectl describe cs

k8s 1.22.4 kubeadm 部署

文章图片

kubectl get pod -n kube-system

k8s 1.22.4 kubeadm 部署

文章图片


    推荐阅读