实行情况
体系主机网卡centos7.9.2009k_masterens33 192.168.50.20centos7.9.2009k_nodeens33 192.168.50.21都是最小化安装的
根本情况准备(全部节点都须要设置的)
设置yum源
由于centos7 的yum源早就制止维护了,我们利用阿里云上面yum源- curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
- yum clean all
- yum makecache
- # 安装一些基础命令
- yum -y install bash-completion vim net-tools bridge-utils wget
- # 刷新一下终端
- bash
复制代码 修改主机名和ssh免密
- hostnamectl set-hostname k_master
- hostnamectl set-hostname k_node
- bash
复制代码- # 配置域名解析和ssh免密,方便传输文件
- [root@k_master ~]# cat /etc/hosts
- 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
- ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
- 192.168.50.20 k_master
- 192.168.50.21 k_node
- ssh-keygen
- ssh-copy-id root@k_master
- ssh-copy-id root@k_node
复制代码 设置ntp
- yum -y install chrony
- systemctl enable chronyd --now
- chronyc sources
- date
复制代码 禁用防火墙和selinux
- systemctl disable firewalld.service --now
- setenforce 0
- vim /etc/selinux/config
- # 修改为
- SELINUX=disabled
- # 重启
- reboot
复制代码 禁用swap分区
k8s是要求克制利用swap分区的,会对体系的性能产生负面的影响的
我这里的话,在创建假造机的时间,就没有创建交换分区,以是不须要利用- [root@k_node ~]# cat /etc/fstab
- #
- # /etc/fstab
- # Created by anaconda on Fri May 8 09:56:12 2026
- #
- # Accessible filesystems, by reference, are maintained under '/dev/disk'
- # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
- #
- /dev/mapper/centos-root / xfs defaults 0 0
- UUID=7cdc3393-4ec5-490d-a7c3-7fda6123940d /boot xfs defaults 0 0
复制代码 修改linux内核参数
- # 加载br_netfilter内核模块
- modprobe br_netfilter
- # 永久生效,开启会自动加载这个模块
- echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf
- # 验证模块是否安装成功
- lsmod | grep br_netfilter
- # 添加内核参数
- 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
- sysctl -p /etc/sysctl.d/k8s.conf
- # 会输出一些信息的
复制代码 安装k8s
设置k8s源
- yum -y install ipset ipvsadm
- cat > /etc/sysconfig/modules/ipvs.modules << EOF
- modprobe -- ip_vs
- modprobe -- ip_vs_rr
- modprobe -- ip_vs_wrr
- modprobe -- ip_vs_sh
- modprobe -- nf_conntrack_ipv4
- EOF
- # 添加权限,这样开机回自动加载
- chmod +x ipvs.modules
- bash ipvs.modules
- # 查看加载是否成功了
- lsmod | grep -e ip_vs -e nf_conntrack_ipv4
复制代码 实行初始化- wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
- yum -y install docker-ce
- systemctl enable docker --now
- # 安装docker的时候,默认会安装containerd
- # 生成containerd配置文件
- containerd config default > /etc/containerd/config.toml
- # 编辑这个文件config.toml
- #设置拉取的镜像
- sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"
- #设置system cgroup驱动
- SystemdCgroup = true
- # 修改镜像拉取策略,配置镜像加速器
- [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
- [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
- endpoint = ["https://registry-k8s-io.mirrors.sjtug.sjtu.edu.cn"]
- [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
- endpoint = ["自己的镜像仓库地址"]
- # 当拉取registry.k8s.io 下的镜像的时候,去上海交大的镜像站下载,而不是去国外下载镜像
- # 当拉取docker.io 镜像的时候,去国内网站下载
- systemctl enable containerd --now
- [root@k_master containerd]# systemctl restart containerd
- # 查看containerd版本
- [root@k_master containerd]# containerd -v
- containerd containerd.io 1.6.33 d2d58213f83a351ca8f528a95fbd145f5654e957
复制代码- cat > /etc/yum.repos.d/k8s.repo << EOF
- [kubernetes]
- name=kubernetes
- baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
- enabled=1
- gpgcheck=0
- repo_gpgcheck=0
- gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
- http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
- EOF
复制代码 将node节点添加到k8s集群
这个参加k8s集群是偶尔间限定的,24小时逾期,可以手动天生kubeadm token create --print-join-command
- # 安装1.28版本
- yum -y install kubelet-1.28.0 kubectl-1.28.0 kubeadm-1.28.0
- # 设置开启自启,等会安装k8s集群的时候,会自动的启动的
- systemctl enable kubelet
- # 安装后就会有这个crictl命令了,这个就是用来连接哪一个容器运行时的
复制代码 检察节点状态- # 这个是老版本的写法
- crictl config runtime-endpoint unix:///var/run/containerd/containerd.sock
- crictl config image-endpoint unix:///var/run/containerd/containerd.sock
复制代码 安装网络插件(calico,只须要在kmaster节点上利用)
安装版本为3.26
https://archive-os-3-26.netlify.app/calico/3.26/about/
- # 新版本的写法
- cat > /etc/crictl.yaml << EOF
- runtime-endpoint: unix:///var/run/containerd/containerd.sock
- image-endpoint: unix:///var/run/containerd/containerd.sock
- timeout: 10
- debug: false
- EOF
- # 配置好后可以通过下面的命令输出一些信息,会有报错的,因为还没有安装k8s网络插件
- crictl info
- systemctl restart containerd
复制代码 k8s集群测试
- kubeadm config print init-defaults > kubeadm.yaml
- [root@k_master ~]# cat kubeadm.yaml
- apiVersion: kubeadm.k8s.io/v1beta3
- bootstrapTokens:
- - groups:
- - system:bootstrappers:kubeadm:default-node-token
- token: abcdef.0123456789abcdef
- ttl: 24h0m0s
- usages:
- - signing
- - authentication
- kind: InitConfiguration
- localAPIEndpoint:
- advertiseAddress: 192.168.50.20 # master 地址
- bindPort: 6443
- nodeRegistration:
- criSocket: unix:///var/run/containerd/containerd.sock # 容器运行时接口
- imagePullPolicy: IfNotPresent
- name: k_master # 主机名区分
- taints: null
- ---
- apiServer:
- timeoutForControlPlane: 4m0s
- apiVersion: kubeadm.k8s.io/v1beta3
- certificatesDir: /etc/kubernetes/pki
- clusterName: kubernetes
- controllerManager: {}
- dns: {}
- etcd:
- local:
- dataDir: /var/lib/etcd
- imageRepository: registry.aliyuncs.com/google_containers # 初始化时设置镜像仓库地址
- kind: ClusterConfiguration
- kubernetesVersion: 1.28.0
- networking:
- dnsDomain: cluster.local
- serviceSubnet: 10.96.0.0/12
- podSubnet: 10.244.0.0/16 # pod网段
- scheduler: {}
- ---
- apiVersion: kubeproxy.config.k8s.io/v1alpha1
- kind: KubeProxyConfiguration
- mode: ipvs # 设置ipvs模式
- ---
- apiVersion: kubelet.config.k8s.io/v1beta1
- kind: KubeletConfiguration
- cgroupDriver: systemd # 设置kubelet驱动为systemd
复制代码 创建一个busybox的pod,看能不能访问外网- kubeadm init --config=kubeadm.yaml
- # 输出信息
- 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.50.20:6443 --token abcdef.0123456789abcdef \
- --discovery-token-ca-cert-hash sha256:bd17a10cb11b2a54cdec94844bc0f58375d1448ce8f7275720c2584f4d725d91
复制代码 k8s安装其他组件
安装metrics-server组件
可以监控 pod,node利用cpu,内存的情况- # 根据上面的信息,我们创建目录,这个目录就是k8s管理员文件,可以操作k8s集群的文件
- mkdir -p $HOME/.kube
- sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
- sudo chown $(id -u):$(id -g) $HOME/.kube/config
复制代码 安装nfs驱动,主动创建pv
nfs动态创建pv
安装dashboard
安装dashboard
安装helm
安装helm
增补
[code]echo "source |