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’

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐