centos7安装k8s部署系统

news/2025/2/26 13:44:45

centos7安装k8s部署系统

一、环境准备

标题1、设置唯一的静态ip

vi /etc/sysconfig/network-scripts/ifcfg-ens33

将 BOOTPROTO 改为static
BOOTPROTO=static
ONBOOT=yes

添加ip、网关和DNS地址,网关可以通过命令:“netstat -rn” 查看
IPADDR=192.168.253.131
GATEWAY=192.168.253.2
DNS1=8.8.8.8

标题2、时间同步

k8s要求集群中的节点必须精确一致,所以直接使用chronyd从网络同步时间

启动chronyd服务
systemctl start chronyd
设为开机自启
systemctl enable chronyd
查看当前时间
date

标题3、重新设置主机名

在k8s中, 主机名不能重复,所以将其设为不一样的节点

主节点

hostnamectl set-hostname master

工作节点1

hostnamectl set-hostname node1

工作节点2

hostnamectl set-hostname node2

标题4、设置hosts域名映射

在所有节点上执行以下命令,在hosts文件中添加一个指向主节点的域名,这里不要照抄,要将ip改成你自己的ip

在所有节点执行
echo “10.0.2.15 cluster-endpoint” >> /etc/hosts
在初始化的时候需要用到master,所以需要hosts加入以下配置,对应的主机名要和上面第三步的一样
#以下操作只在主节点操作
echo “10.0.2.15 master” >> /etc/hosts
echo “192.168.253.132 node1” >> /etc/hosts
echo “192.168.253.133 node2” >> /etc/hosts

标题5、禁用SELINUX

setenforce 0
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

标题6、关闭swap分区

swapoff -a
sed -ri ‘s/.swap./#&/’ /etc/fstab

标题7、允许 iptable 检查桥接流量

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
让以上配置生效
sudo sysctl --system

标题8、禁用iptables 和 防火墙服务

关闭iptables,没这个服务可忽略

systemctl stop iptables
systemctl disable iptables

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

标题9、配置ipvs功能

1.安装ipset和ipvsadm
yum install ipset ipvsadmin -y
2.添加需要加载的模块写入脚本文件
cat < /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe – ip_vs
modprobe – ip_vs_rr
modprobe – ip_vs_wrr
modprobe – ip_vs_sh
modprobe – nf_conntrack_ipv4
EOF
3.为脚本添加执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules
4.执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules
5.查看对应的模块是否加载成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4

标题二、安装docker

标题1、卸载原docker

yum list installed | grep docker
yum -y remove docker*
docker -y remove containerd.io.x86_64
rm -rf /var/lib/docker

下载wget
yum install wget -y
下载yum-utils
yum install -y yum-utils
下载net-tools
yum install net-tools -y

标题2、使用国内的阿里云镜像仓

yum-config-manager
–add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

标题3、安装指定版本的docker

yum install
docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6 -y

4、启动docker

systemctl enable docker --now
systemctl start docker
systemctl restart docker

5、使用systemd代替cgroupfs、以及配置仓库镜像地址

docker在默认情况下使用Cgroup Driver 为cgroupfs,而k8s推荐使用systemd来代替cgroupfs,所以在/etc/docker/daemon.json内加入以下内容,如果没有这个文件,手动创建一个
vi /etc/docker/daemon.json
加入以下内容
{
“exec-opts”: [“native.cgroupdriver=systemd”]
}
配置文件生效并重启
systemctl daemon-reload
systemctl restart docker
systemctl status docker

三、安装k8s三大件

以下操作需要在所有的节点上进行

1、 配置源

cat < /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
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF


2、安装三大件

yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
–disableexcludes=kubernetes表示排除禁用

3、添加配置

vi /etc/sysconfig/kubelet
在/etc/sysconfig/kubelet文件中加入以下内容
KUBELET_CGROUP_ARGS=“–cgroup-driver=systemd”

或者修改
#或者修改
vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
#或者修改
vi /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
#加入/修改
Environment=“KUBELET_KUBECONFIG_ARGS=–bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --cgroup-driver=cgroupfs”
#配置文件生效并重启
systemctl daemon-reload
systemctl restart kubelet

4、启动kubelet

开机自动启动

systemctl enable --now kubelet
systemctl restart kubelet

查看驱动
#查看docker cgroup驱动
docker info|grep Driver

#查看kubelet cgroup驱动
systemctl show --property=Environment kubelet | cat


四、使用kubeadm引导集群

理论上以下操作只需要在master节点进行

1、下载各个机器需要的集群

sudo tee ./images.sh <<-‘EOF’
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in i m a g e s [ @ ] ; d o d o c k e r p u l l r e g i s t r y . c n − h a n g z h o u . a l i y u n c s . c o m / l f y k 8 s i m a g e s / {images[@]} ; do docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/ images[@];dodockerpullregistry.cnhangzhou.aliyuncs.com/lfyk8simages/imageName
done
EOF

2、设置可执行权限并执行脚本

chmod +x ./images.sh && ./images.sh

五、主节点环境准备

1、初始化主节点
使用init组件快速初始化一个主节点
kubeadm init
–apiserver-advertise-address=10.0.2.15
–control-plane-endpoint=cluster-endpoint
–image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images
–kubernetes-version v1.20.9
–service-cidr=10.96.0.0/16
–pod-network-cidr=192.168.0.0/16


如果报错
重置
kubeadm reset
清楚残留文件
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
systemctl stop kubelet
systemctl stop docker
rm -rf /var/lib/cni/*
rm -rf /var/lib/kubelet/*
rm -rf /etc/cni/*
ifconfig cni0 down
ifconfig flannel.1 down
ifconfig docker0 down
ip link delete cni0
ip link delete flannel.1
systemctl start docker
然后再初始化

2、初始化后续

根据上面的提示继续进行配置,如果需要使用集群,还需要执行以下命令,
记住,这里的命令是从第一步初始化成功后拷贝过来的命令,应该拷贝你的命令来执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown ( i d − u ) : (id -u): (idu):(id -g) $HOME/.kube/config

work节点加入集群(安装令牌,只在工作节点执行)
如果要在集群中加入工作节点,那么需要在工作节点执行以下命令,这些是集群的令牌
记住,这里的命令是从第一步初始化成功后拷贝过来的命令,应该拷贝你的命令来执行

以下操作只在work节点执行即可
kubeadm join cluster-endpoint:6443 --token ppwpeo.286k19gvjdlelen8
–discovery-token-ca-cert-hash sha256:1e402bf817b1f8f2ade7aeb0a702c389903a96e72724517409793e7b4904ee72

加入后我们在主节点执行kubectl get nodes命令,可以看到,除了主节点之外,还有2个工作节点,在看它们的状态都是NotReady(未准备好)的,因为还没安装网络插件,这刚好是我们下一步要做的事;

查看nodes
kubectl get nodes

这个命令一定要在主节点执行才能生成令牌

kubeadm token create --print-join-command

标题3、安装pod网络插件(只在主节点执行)

以下操作只在master节点执行即可

下载 calico-etcd.yaml 到当前目录

wget https://docs.projectcalico.org/v3.10/manifests/calico.yaml

加载网络插件

kubectl apply -f calico.yaml
kubectl get nodes

如果不能下载
直接加载/k8stest文件夹下的calico.yaml

3、加入k8stest 文件夹
添加777权限

4、加载可视化
#进入文件夹
cd /k8stest
加载
kubectl apply -f k8s-dashboard.yaml

//创建一个dashboard的管理用户
kubectl create serviceaccount dashboard-admin -n kube-system

//将创建的dashboard用户绑定为管理用户
kubectl create clusterrolebinding dashboard-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin

//获取刚刚创建的用户对应的token名称
kubectl get secrets -n kube-system | grep dashboard
dashboard-admin-token-h7w7r kubernetes.io/service-account-token 3 12s

//查看token的详细信息
kubectl describe secrets -n kube-system dashboard-admin-token-ntbtb

查看kubetl 日志
journalctl -u kubelet --no-pager

单节点部署需要去除污点
kubectl describe nodes master |grep Taints
kubectl taint node master gameble-

登录docker仓库(需要生成)
docker login -u 账号 -p 密码 swr.cn-south-1.myhuaweicloud.com
生成kubectl 密钥
kubectl create secret docker-registry regsecret --docker-server=swr.cn-south-1.myhuaweicloud.com --docker-username=账号 --docker-password=密码
删除密钥
kubectl delete -n my_name_space secret secret_name

全部启动
#进入文件夹
cd /k8stest/deploy
#启动
kubectl apply -f .

全部删除
kubectl delete -f .

redis 加载字符
#加入内容
set ‘key’ ‘value’

#查看内容
get ‘key’


http://www.niftyadmin.cn/n/1974600.html

相关文章

Hibernate 5.0.2加载hibernate.cfg.xml时mapping不生效

2019独角兽企业重金招聘Python工程师标准>>> //Group类 package com.jingtai;public class Group {private int groupId;private String groupName;public void setGroupId(int id){groupId id;}public int getGroupId(){return groupId;}public void setGroupName…

k8s运行minio的yml文件

k8s运行minio的yml文件 apiVersion: apps/v1 kind: Deployment metadata:labels:app: minioname: minionamespace: default spec:replicas: 1selector:matchLabels:app: miniotemplate:metadata:labels:app: miniospec:containers:- args:- server- /data- --console-address-…

端口详解2

5050|多媒体会议控制协议5051|ITA代理5052|ITA管理5137|MyCTS服务器端口5150|Ascend通道管理协议5154|BZFlag游戏服务器5190|America-Online(美国在线)5191|AmericaOnline1(美国在线)5192|AmericaOnline2(美国在线)5193|AmericaOnline3(美国在线)5222|Jabber客户端连接5225|HP(…

虚拟机中Linux系统安装

虚拟机安装完成后就应安装虚拟机了,首先要先有虚拟机的镜像安装文件,可以去搜索下载 打开虚拟机界面创建新的虚拟机 默认典型安装点击下一步 浏览中选择要安装的系统镜像文件,点击下一步安装 定义要安装的虚拟机的作用最为名字,安装位置也是自定义的,我这里装在了专用盘D中…

【数据库】MFC ODBC(四)

7、滚动记录 CRecordset提供了几个成员函数用来在记录集中滚动。当用这些函数滚动到一个新记录时&#xff0c;框架会自动地把新记录的内容拷贝到域数据成员中。 void MoveNext( ); //前进一个记录 void MovePrev( ); //后退一个记录 void MoveFirst( ); //滚动到记录集中的第…

【Vue3】学习笔记-toRaw 与 markRaw

toRaw&#xff1a; 作用&#xff1a;将一个由reactive生成的响应式对象转为普通对象。使用场景&#xff1a;用于读取响应式对象对应的普通对象&#xff0c;对这个普通对象的所有操作&#xff0c;不会引起页面更新。 markRaw&#xff1a; 作用&#xff1a;标记一个对象&#xff…

故事一

最近学习状态不是很好,看到一篇关于量子计算机原理的文章,现在贴出来让大家看看(侵权删除) 电影《三体》上映后的某一天&#xff0c; 三体人突然降临。 它们用飞船把地球团团围住&#xff0c; 监视了地球向宇宙发射的所有信息。 地球人通过面壁计划&#xff0c; 选出了一位物理…

BigDecimal 的加减乘除运算以及除法保留两位小数

BigDecimal 加减乘除 BigDecimal bigDecimal1 new BigDecimal("10");BigDecimal bigDecimal2 new BigDecimal("5");BigDecimal bigDecimal3 new BigDecimal(0);//加法bigDecimal3 bigDecimal1.add(bigDecimal2);System.out.println("和 是&#…