Kubernetes(k8s) 集群部署

149 阅读1分钟

91a406778554909e2edfcfebad6b463b_640_wx_fmt=png&from=appmsg.png 一. 环境准备(每个节点都要做)

安装必要工具:

yum install -y ntpdate ntp wget lsof telnet yum-utils

更新系统上的所有软件包:

yum install -y update

分别为三台服务器设置不同的主机名

在192.168.192.131

hostnamectl set-hostname k8s-master

在192.168.192.132

hostnamectl set-hostname k8s-worker1

在192.168.192.133

hostnamectl set-hostname k8s-worker2

修改hosts文件,映射IP地址到对应的主机名,便于节点之间的通信

修改hosts文件,将hostname、ip更新至/etc/hosts文件中

cat >> /etc/hosts << EOF 192.168.192.131 k8s-master 192.168.192.132 k8s-worker1 192.168.192.133 k8s-worker2 EOF

时间同步:

ntpdate -u ntp.aliyun.com

禁用swap以避免性能问题:三台主机均关闭防火墙,selinux,并关闭swap分区

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

配置SELinux和防火墙

将 SELinux 设置为 permissive 模式(相当于将其禁用)

setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

关闭防火墙服务

systemctl disable firewalld systemctl status firewalld

配置允许 iptables 检查桥接流量

cat >> /etc/sysctl.conf << EOF vm.swappiness=0 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 EOF

加载流量控制的内核模块

modprobe overlay modprobe br_netfilter

使以上配置立即生效

sysctl --system

二.Docker安装(每个节点都要做)

添加Docker CE仓库

yum-config-manager
--add-repo
mirrors.aliyun.com/docker-ce/l… yum makecache fast #安装前先更新yum软件包索引

安装Docker CE及相关组件:

docker-ce :docker 社区版

docker-ce-cli:操作 docker 服务的命令行程序

containerd.io:容器化的运行环境

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

修改daemon配置文件/etc/docker/daemon.json来使用加速器

mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://*********.mirror.aliyuncs.com"] } EOF

重载并重启Docker服务

systemctl daemon-reload systemctl restart docker

配置 cri-dockerd

三.安装cri-dockerd(若要在 k8s 中使用 Docker 作为容器引擎,每个节点都要做)

从 k8s v1.24 发行版起,dockershim 组件被移除,若要在 k8s 中使用 Docker 作为容器引擎,需要先部署好 cri-dockerd。CRI 是容器运行时接口(Container Runtime Interface),cri-dockerd 是以 Docker 作为容器引擎而提供的容器运行时接口。

通过wget下载cri-dockerd

wget github.com/Mirantis/cr…

安装

rpm -ivh cri-dockerd-0.3.4-3.el7.x86_64.rpm

配置

vi /usr/lib/systemd/system/cri-docker.service # 找到第10行ExecStart= 修改为 ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9

重载系统守护进程→设置cri-dockerd自启动→启动cri-dockerd

systemctl daemon-reload && systemctl restart docker cri-docker.socket cri-docker # 重启Docker组件

systemctl status docker cir-docker.socket cri-docker # 检查Docker组件状态

四.配置k8s源(每个节点都要做)

Kubernetes YUM源

cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=mirrors.aliyun.com/kubernetes/… enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=mirrors.aliyun.com/kubernetes/… mirrors.aliyun.com/kubernetes/… exclude=kubelet kubeadm kubectl EOF

五.Kubernetes 安装

安装Kubernetes Master组件(主节点操作)

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes systemctl daemon-reload systemctl start kubelet systemctl enable kubelet kubelet --version kubectl version kubeadm version

在主节点(192.168.192.131)上的操作初始化

apiserver-advertise-address:master节点的ip地址可以自行填写,

image-repository:镜像地址,可以填写国内镜像源的地址

service-cidr:集群的网段

pod-network-cidr:集群pod网段

cri-socket:socket接口

kubeadm init --apiserver-advertise-address=192.168.192.131 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --cri-socket unix:///var/run/cri-dockerd.sock

执行完后,按照输出的指令执行配置登录选项:

mkdir -p HOME/.kubecpi/etc/kubernetes/admin.confHOME/.kube cp -i /etc/kubernetes/admin.conf HOME/.kube/config chown (idu):(id -u):(id -g) $HOME/.kube/config export KUBECONFIG=/etc/kubernetes/admin.conf

部署网络插件(Flannel为例)

kubectl apply -f raw.githubusercontent.com/coreos/flan…

执行命令查看安装是否完成

watch kubectl get pod -n kube-system -o wide

输出中检查 CoreDNS Pod 的STATUS直到变成 Running 表示完成(需要几分钟)

在每个工作节点(192.168.192.132, 192.168.192.133)上的操作

安装Kubernetes Worker组件 yum install -y kubelet kubeadm --disableexcludes=kubernetes

在所有worker节点执行下面操作,将 worker 节点加入集群 kubeadm join 192.168.192.131:6443 --token m7r7hs.zppymcxc9izq2kmk --discovery-token-ca-cert-hash sha256:5ce19c4ac6ee2eaf0fec30b37833b05b8f7c5a6b5983d733b33e22431737e268

验证集群状态(在主节点上执行) kubectl get nodes 至此我们的k8s环境已搭建完毕,欢迎分享进群讨论.