kubernetes的安装
k8s安装
·
# kubernetes的安装
minikuber的安装与使用
kubeadm安装方式
k8s集群搭建
1、准备
1、准备三台服务
编辑三台服务器的/etc/sysconfig/network-scripts/ifcfg-ens33文件给三台服务器配置静态IP
# 示例
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
#下面两项修改
BOOTPROTO=static
ONBOOT=yes
修改后保存
执行systemctl restart network
重启网络
2、同步时间
启动chronyd服务
执行systemctl start chronyd
使chronyd开机自启
执行systemctl enable chronyd
3、禁用iptables和firewalld服务
#关闭firewalld服务
systemctl stop iptables
#禁止firewalld服务开机自启
systemctl disable firewalld
# 关闭iptables
systemctl stop iptables
# 禁止iptables开机自启
systemctl disable iptables
4、禁用selinux
# 编辑/etc/selinux/config 将SELINUX的值设为disable
SELINUX=disable
5、禁用分区
#编辑分区fstab 注释掉swap分区一行 /etc/fstab
# /dev/mapper/centos/-swap swap
6、修改linux内核参数
#编辑 /etc/sysctl.d/kubernetes.conf 文件 添加如下配置
cat << EOF > /etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-ip6tables =1
net.bridge.bridge-nf-call-iptables =1
net.ipv4.ip_forward = 1
EOF
重新加载配置
sysctl -p
加载网桥过滤模块
modprobe br_netfilter
查看网桥过滤模块是否加载成功
lsmod | grep br_netfilter
7、配置ipvs功能
在k8s中services有两种代理模型,一种是基于iptables的,一种是基于ipvs的,两者相比ipvs性能高但要手动加载
#安装ipset和ipvsadm
yum install ipset ipvsadmin -y
添加加载模块的脚本文件
cat << EOF >/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
为脚本文件添加执行权限
chmod +x /etc/sysconfig/modules/ipvs.modules
执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules
查看对应模块是否加载成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
8、重启服务器
reboot
2、安装docker
1、安装docker看上文
2、添加一个配置文件
/etc/docker && touch /etc/docker/daemon.json
#两条指令分别执行
cat << EOF > /etc/docker/daemon.json
{
"exec-opts":["native.cgroupdriver=systemd"],
"registry-mirrors":["https://dgdghshfrq.mirror.aliyun.cs.com"]
}
EOF
3、启动docker
systemctl start docker
# 设置开机自启
systemctl enable docker
3、安装k8s组件
1、设置k8s镜像
# 编辑/etc/yum.repos.d/kubernetes.repo
cat << EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/repodata/repomd.xml.key
EOF
2、安装kubeadm、kubectl、kubelet
yum install -y kubeadm kubectl kubelet
配置kubelet的cgroup
#编辑/etc/sysconfig/kubelet 添加如下内容
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
设置kubelet开机自启
systemctl enable kubelet
###4、准备集群镜像
1、安装docker-engine的运行时接口cri-dockerd
# 获取cri-dockerd
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.12/cri-dockerd-0.3.12-3.el7.x86_64.rpm
# 安装cri-dockerd
yum install -y cri-dockerd-0.3.12-3.el7.x86_64.rpm
2、准备apiserver等组件镜像
# 在/etc/resolv.conf 文件中加入网关
nameserver 192.168.1.1
重加载
systemctl daemon-reload
查看需要的镜像
kubeadm config images list
首先创建一个脚本
touch pullImage.sh && chmod +x pullImage.sh
#写入以下内容
cat << EOF > init.sh
#!/bin/sh
images=(
kube-apiserver:v1.29.3
kube-controller-manager:v1.29.3
kube-scheduler:v1.29.3
kube-proxy:v1.29.3
etcd:3.5.12-0
pause:3.9
coredns:v1.11.1
)
for image in "${images[@]}"
do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$image
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$image registry.k8s.io/$image
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$image
done
docker tag registry.k8s.io/coredns:v1.11.1 registry.k8s.io/coredns/coredns:v1.11.1
docker rmi registry.k8s.io/coredns:v1.11.1
EOF
执行脚本
./pullImage.sh
修改文件/usr/lib/systemd/system/cri-docker.service的第十行内容
ExecStart=/usr/bin/cri-dockerd --pod-infra-container-image=registry.k8s.pause:3.9 --container-runtime-endpoint fd://
设置cri-dockerd自启动
systemctl start cri-docker
systemctl enable cri-docker
5、集群初始化
注意: 前四步各节点都要执行
1、创建集群初始化脚本
touch init.sh && chmod +x init.sh
cat << EOF > init.sh
kubeadm init \
--kubernetes-version=v1.29.3 \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--apiserver-advertise-address=192.168.1.18 \ #本ip为master节点ip
--cri-socket=unix:///run/cri-dockerd.sock
EOF
注意: 此步执行需要先确定docker cri的socket位置
执行init.sh
./init.sh
依次执行以下指令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
worker节点依次执行kubeadm join指令
安装flannet网络插件
# 获取配置文件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 去掉文件中的三个image镜像地址的前端部分 docker.io/
在master节点执行
kubectl apply -f kube-flannel.pingyml
执行 kubectl get nodes指令 等待所有节点变为ready状态
apiVersion: batch/v1beta1
kind: Cronjob
metadata:
name: pc-cronjob
namespace: dev
labels:
controller: cronjob
spec:
schedule: "*/1 * * * *"
jobTemplate:
metadata:
spec:
template:
spec:
restartPolicy: Never
containers:
- name: counter
image: busybox:1.30
command: ["bin/sh","-c","for i in 9 8 7 6 5 4 3 2 1;do echo $i;sleep 3;done"]
更多推荐
已为社区贡献2条内容
所有评论(0)