栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

K8s 1.21版本部署(持续更新)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

K8s 1.21版本部署(持续更新)

一. 准备材料

1.环境相关(可选)

1)ipvs

新增ipvs.module 

vim /etc/sysconfig/modules/ipvs.module

#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"
for kernel_module in ${ipvs_modules}; do
  /sbin/modinfo -F filename ${kernel_module} > /dev/null 2>&1
  if [ $? -eq 0 ]; then
    /sbin/modprobe ${kernel_module}
  fi
done

执行生效 

chmod 755 /etc/sysconfig/modules/ipvs.modules 
sh /etc/sysconfig/modules/ipvs.modules 
lsmod | grep ip_vs

2)防火墙

K8s集群每个节点都需要关闭防火墙

systemctl stop firewalld && systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

3)swap

swapoff -a
cp /etc/fstab  /etc/fstab.bak
cat /etc/fstab.bak | grep -v swap > /etc/fstab

4)iptables

直接关闭(测试环境)、/etc/sysctl.conf添加

net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1

避免偶现dns解析失败

5)sysctl修改

/etc/sysctl.conf添加

vm.swappiness = 0
net.ipv4.ip_forward = 1

6)配置生效

sysctl -p

7)注意如果是K8s 集群, 主机名不可一致,若一致需要调整主机名

  可替换为xxx-master xxx-node

hostnamectl set-hostname 

2. Docker+K8s yum源配置

可以使用aliyun的源,也可以使用清华源进行安装

aliyun:

docker-yum: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

k8s-image:kubernetes-yum-repos-kubernetes-el7-x86_64安装包下载_开源镜像站-阿里云

清华源:

docker-rpm-yum:Index of /docker-ce/linux/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

1)docker安装

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce -y
systemctl restart docker
systemctl enable docker

2)配置k8s源

cat < /etc/yum.repos.d/k8s.repo 
[k8s]
name=k8s
enabled=1
gpgcheck=0
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
EOF

3) k8s 启动

#安装kube
yum install -y kubelet-1.21.0-0 kubeadm-1.21.0-0 kubectl-1.21.0-0

#自启动 kubelet
systemctl daemon-reload && systemctl enable kubelet

3.  获取K8s相关镜像

前提:已安装kubeadm成功

1) kubeadm config images list --kubernetes-version=v1.21.0

获取相关镜像地址

k8s.gcr.io/kube-apiserver:v1.21.0
k8s.gcr.io/kube-controller-manager:v1.21.0
k8s.gcr.io/kube-scheduler:v1.21.0
k8s.gcr.io/kube-proxy:v1.21.0
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.7


注:k8s.gcr.io 国内可能连不上。

处理方案1. 可通过docker search kube-apiserver:v1.21.0

查到:

可通过 docker pull louwy001/kube-apiserver 下载, tag 改名后,push 到私有仓库

处理方案2. kubeadm config images list --kubernetes-version=v1.21.0 --image-repository louwy001
#从hub.docker.com 登录后拉取,coredns/coredns已经没有1.8.0 暂用1.8.3代替
docker pull louwy001/kube-apiserver:v1.21.0         
docker pull louwy001/kube-proxy:v1.21.0             
docker pull louwy001/kube-controller-manager:v1.21.0
docker pull louwy001/kube-scheduler:v1.21.0         
docker pull coredns/coredns:1.8.3                   
docker pull louwy001/pause:3.4.1                    
docker pull louwy001/etcd:3.4.13-0                  


docker save louwy001/kube-apiserver:v1.21.0          >kube-apiserver_v1.21.0.tar
docker save louwy001/kube-proxy:v1.21.0              >kube-proxy_v1.21.0.tar
docker save louwy001/kube-controller-manager:v1.21.0 >kube-controller-manager_v1.21.0.tar
docker save louwy001/kube-scheduler:v1.21.0          >kube-scheduler_v1.21.0.tar  
docker save coredns/coredns:1.8.3                    >coredns_1.8.3.tar 
docker save louwy001/pause:3.4.1                     >pause_3.4.1.tar 
docker save louwy001/etcd:3.4.13-0                   >etcd_3.4.13-0.tar

docker load -i kube-apiserver_v1.21.0.tar
docker load -i kube-proxy_v1.21.0.tar
docker load -i kube-controller-manager_v1.21.0.tar
docker load -i kube-scheduler_v1.21.0.tar  
docker load -i coredns_1.8.3.tar 
docker load -i pause_3.4.1.tar 
docker load -i etcd_3.4.13-0.tar

docker tag louwy001/kube-apiserver:v1.21.0  k8s.gcr.io/kube-apiserver:v1.21.0
docker tag louwy001/kube-proxy:v1.21.0   k8s.gcr.io/kube-proxy:v1.21.0
docker tag louwy001/kube-controller-manager:v1.21.0 k8s.gcr.io/kube-controller-manager:v1.21.0
docker tag louwy001/kube-scheduler:v1.21.0 k8s.gcr.io/kube-scheduler:v1.21.0
docker tag coredns/coredns:1.8.3  k8s.gcr.io/coredns/coredns:v1.8.0
docker tag louwy001/pause:3.4.1   k8s.gcr.io/pause:3.4.1 
docker tag louwy001/etcd:3.4.13-0 k8s.gcr.io/etcd:3.4.13-0


另注:

 如果使用私有库,且私有库为http 协议,docker login 的时候可能会报

Error response from daemon: Get "https:///v2/": x509: certificate signed by unknown authority

原因:docker 默认是https,因为没有配置证书,所以必须添加非安全的registry

配置 /etc/docker/daemon.json

"insecure-registries":[""],

systemctl restart docker

另注:

若已部署过低版本kube , 删除子node的服务器, 期望部署新版本需要执行 rm -rf /var/lib/kubelet/*

避免残留配置影响部署。

 如果从1.18-1.21 需要注意:

部署时遇到

coredns未启动,有以下报错内容

E0610 03:14:30.260507 1 reflector.go:138] pkg/mod/k8s.io/client-go@v0.20.2/tools/cache/reflector.go:167: Failed to watch *v1beta1.EndpointSlice: failed to list *v1beta1.EndpointSlice: endpointslices.discovery.k8s.io is forbidden: User "system:serviceaccount:kube-system:coredns" cannot list resource "endpointslices" in API group "discovery.k8s.io" at the cluster scope

是coredns的一个bug, 需要修改coredns角色权限

kubectl edit clusterrole system:coredns

最后追加

- apiGroups:
  - discovery.k8s.io
  resources:
  - endpointslices
  verbs:
  - list
  - watch


 

<未完待续,将开始master配置及集群创建>

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/963153.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号