侧边栏壁纸
博主头像
CYC的个人博客博主等级

学习使人进步

  • 累计撰写 91 篇文章
  • 累计创建 11 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录
k8s

k8s1.23版本集群搭建

Administrator
2024-02-05 / 0 评论 / 0 点赞 / 155 阅读 / 6463 字

k8s1.23版本集群搭建

相关资料:链接:https://pan.baidu.com/s/181STE4g-BmZaybb47iVQAg

提取码:aabb

#优化安装环境
1.设置 master,node1,node2  hosts文件

vim /etc/hosts

192.168.31.14 cymaster1
192.168.31.15 cynode1
192.168.31.16 cynode2



2.设置master,node1,node2 相互免密登录
ssh-keygen
ssh-copy-id cymaster
ssh-copy-id cynode1
ssh-copy-id cynode2

3.建议关闭交换分区(虚拟内存分区)
swapoff -a  
vim /etc/fstab

4.修改机器内核参数 
[root@xianchaomaster1 ~]# modprobe br_netfilter
[root@xianchaomaster1 ~]# echo "modprobe br_netfilter" >> /etc/profile
[root@xianchaomaster1 ~]# cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
[root@xianchaomaster1 ~]# sysctl -p /etc/sysctl.d/docker.conf


5.配置国内源
#配置国内阿里云docker的repo源
[root@xianchaomaster1 ~]# yum install -y yum-utils
[root@xianchaomaster1 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@xianchaonode1~]# yum install -y yum-utils
[root@xianchaonode1 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@xianchaonode2 ~]# yum install -y yum-utils
[root@xianchaonode2 ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


6.配置k8s国内源,master,node1,node2
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=0



scp /etc/yum.repos.d/kubernetes.repo cynode1:/etc/yum.repos.d/
scp /etc/yum.repos.d/kubernetes.repo cynode2:/etc/yum.repos.d/


vim /etc/hosts
7.配置docker镜像加速器和驱动
vim  /etc/docker/daemon.json 
{
  "registry-mirrors": ["https://8byifwad.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com"]
,"insecure-registries":["192.168.31.13"]
,"exec-opts": ["native.cgroupdriver=systemd"]
}
#修改docker文件驱动为systemd,默认为cgroupfs,kubelet默认使用systemd,两者必须一致才可以。
#yum install -y docker-ce


scp  /etc/docker/daemon.json cynode1:/etc/docker/

scp  /etc/docker/daemon.json cynode2:/etc/docker/

systemctl daemon-reload &&  systemctl restart docker
systemctl enable docker

8.在master,node1,node2安装初始化k8s需要的软件包
yum install -y kubelet-1.23.1 kubeadm-1.23.1 kubectl-1.23.1
systemctl enable kubelet
#每个软件包的作用
#Kubeadm:  kubeadm是一个工具,用来初始化k8s集群的
#kubelet:   安装在集群所有节点上,用于启动Pod的
#kubectl:   通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件



9.kubeadm初始化k8s集群
#把初始化k8s集群需要的离线镜像包上传到master,node1、node2机器上,手动解压:
scp /root/k8s-images-v1.23.1.tar.gz cynode1:/root/
scp /root/k8s-images-v1.23.1.tar.gz cynode2:/root/
docker load  -i /root/k8s-images-v1.23.1.tar.gz


10.使用kubeadm初始化k8s集群控制节点master
kubeadm config print init-defaults > kubeadm.yaml

#根据我们自己的需求修改配置,比如修改 imageRepository 的值,kube-proxy 的模式为 ipvs,初始化节点的时候需要指定cgroupDriver为systemd
advertiseAddress: 192.168.31.14 #控制节点的ip
name: cymaster #控制节点主机名
imageRepository: registry.aliyuncs.com/google_containers #镜像国内源
kubernetesVersion: v1.20.6
podSubnet: 10.244.0.0/16 #指定pod网段, 需要新增加这个


#追加如下几行
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd

#ipvs 表示kube-proxy代理模式是ipvs,如果不指定ipvs,会默认使用iptables,但是iptables效率低,所以我们生产环境建议开启ipvs
#阿里云和华为云托管的K8s,也提供ipvs模式

#基于kubeadm.yaml文件初始化k8s
kubeadm init --config=kubeadm.yaml --ignore-preflight-errors=SystemVerification


#配置kubectl的配置文件config,相当于对kubectl进行授权,这样kubectl命令可以使用这个证书对k8s集群进行管理
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


11.在集群中添加第一个工作节点
kubeadm token create --print-join-command

#kubeadm join 192.168.31.14:6443 --token 8pwo64.38zxbatkvaaqld8k     --discovery-token-ca-cert-hash sha256:18e1b65b0205c08f183a4eeef53cb070df9d1cbae074a17aed45d576654162ef

#分别在node1,node2执行
kubeadm join 192.168.31.14:6443 --token 8pwo64.38zxbatkvaaqld8k     --discovery-token-ca-cert-hash sha256:18e1b65b0205c08f183a4eeef53cb070df9d1cbae074a17aed45d576654162ef --ignore-preflight-errors=SystemVerification


12.master主机上给工作节点roles赋名字
kubectl label node cynode1 node-role.kubernetes.io/worker=worker

kubectl label node cynode2 node-role.kubernetes.io/worker=worker

13.装kubernetes网络组件-Calico
#上传calico.yaml到master上,使用yaml文件安装calico 网络插件 。
kubectl apply -f  calico.yaml

注:在线下载配置文件地址是: https://docs.projectcalico.org/manifests/calico.yaml

kubectl get pod -n kube-system 

#calico网络插件配置文件说明

#CALICO_IPV4POOL_IPIP:是否启用IPIP模式。启用IPIP模式时,Calico将在Node上创建一个名为tunl0的虚拟隧道。
 - name: CALICO_IPV4POOL_IPIP
#IP Pool可以使用两种模式:BGP或IPIP使用IPIP模式时,设置CALICO_IPV4POOL_IPIP="Always",不使用IPIP模式时,设置CALICO_IPV4POOL_IPIP="Off",此时将使用BGP模式。

#IP_AUTODETECTION_METHOD:获取Node IP地址的方式,默认使用第1个网络接口的IP地址,对于安装了多块网卡的Node,可以使用正则表达式选择正确的网卡,例如"interface=eth.*"表示选择名称以eth开头的网卡的IP地址。
-  name: IP_AUTODETECTION_METHOD
  value: "interface=ens33"


14.测试在k8s创建pod是否可以正常访问网络
#把busybox-1-28.tar.gz上传到cymaster、cynode1,cynode2节点,手动解压
docker load -i busybox-1-28.tar.gz


#master
#测试网络是否正常
kubectl run busybox --image busybox:1.28 --image-pull-policy=IfNotPresent --restart=Never --rm -it busybox -- sh

#测试coredns
kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh

nslookup kubernetes.default.svc.cluster.local

#10.96.0.10 就是我们coreDNS的clusterIP,说明coreDNS配置好了。
#解析内部Service的名称,是通过coreDNS去解析的。



15.kubeadm初始化k8s证书过期解决方案
查看证书有效时间:
openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -text  |grep Not
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text  |grep Not
延长证书过期时间
1.把update-kubeadm-cert.sh文件上传到cymaster节点
2.在cymaster上执行如下:
1)给update-kubeadm-cert.sh证书授权可执行权限
[root@cymaster~]#chmod +x update-kubeadm-cert.sh
2)执行下面命令,修改证书过期时间,把时间延长到10年
[root@cymaster~]# ./update-kubeadm-cert.sh all
3)在cymaster节点查询Pod是否正常,能查询出数据说明证书签发完成
kubectl  get pods -n kube-system
4)再次查看证书有效期,可以看到会延长到10年
openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -text  |grep Not
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text  |grep Not




0

评论区