k8s安装部署集群

说明

这里准备了三台服务器,一台作为主节点(Master),两台作为子节点(Node)

每个步奏分为:

  • ALL = 所有服务器
  • Master = 主节点
  • Node = 子节点

详细步骤

查看ip(ALL)

ip addr

这里地址很重要,最好保存下来,后续会用到

配置HostName(ALL)

配置

sudo hostnamectl set-hostname master
sudo hostnamectl set-hostname node1
sudo hostnamectl set-hostname node2

这条命令会删除/etc/hostname文件中的主机名,然后替换为新的主机名。系统会更新/etc/hosts文件.

验证

hostname

IP与主机名映射

配置

vi /etc/hosts

 将上方获取到的ip地址和hostname配置

192.168.40.128 master
192.168.40.130 node1
192.168.40.131 node2

185.199.108.133 raw.githubusercontent.com

其中 185.199.108.133 是后续安装flannel网络插件要用到的

验证

ping node1

Close SelLinux(ALL)

配置

setenforce 0  
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

验证

getenforce

Close FireWalld(ALL)

配置

systemctl stop firewalld
systemctl disable firewalld

验证

systemctl status firewalld

Close SwapOff(ALL)

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

添加K8S、Docker的安装源(ALL)

K8S

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

Docker

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

安装K8S组件(ALL)

yum install kubelet-1.22.4 kubectl-1.22.4 kubeadm-1.22.4 docker-ce-20.10.0 docker-ce-cli-20.10.0 -y

这里说明一下,我这里的指令指定了版本,k8s的所有版本使用起来操作方法都一样,但是如果用其他版本的话,可能需要配置一些东西

启动Kubelet、Docker,设置开机自启(ALL)

配置

systemctl enable kubelet
systemctl start kubelet
  
systemctl enable docker
systemctl start docker

Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kuberntes运行时环境,主要完成以下使命:

  1. 监视分配给该Node节点的pods
  2. 挂载pod所需要的volumes
  3. 下载pod的secret
  4. 通过docker/rkt来运行pod中的容器
  5. 周期的执行pod中为容器定义的liveness探针
  6. 上报pod的状态给系统的其他组件
  7. 上报Node的状态

验证

systemctl daemon-reload
systemctl status kubelet

 要保证为running

 如果出错,卸载重装

yum -y remove kubelet   // -y表示又询问都是yes
yum list kubelet             // 查看是否存在

----查看状态
systemctl daemon-reload
systemctl status kubelet

yum -y install kubelet        // 重新安装
systemctl enable kubelet    // 开机自启
systemctl start kubelet       // 启动

修改Docker配置(ALL)

配置

cat <<EOF > /etc/docker/daemon.json
{
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl daemon-reload
systemctl restart docker

验证

docker info |grep Cgroup

初始化集群(Master)

kubeadm init --kubernetes-version=1.22.4 \
--apiserver-advertise-address=192.168.40.128 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
  • --image-repository registry.aliyuncs.com/google_containers 指定镜像源,由于kubeadm 默认从官网k8s.grc.io下载所需镜像,国内无法访问,因此需要通过--image-repository指定阿里云镜像仓库地址
  • --kubernetes-version:版本信息 kubectl version 查询
  • 定义POD的网段为: 10.244.0.0/16
  • apiserver地址就是master本机IP地址
  • --service-cidr=10.96.0.0/12 : 这个参数后的IP地址直接就套用10.96.0.0/12 ,以后安装时也套用即可,不要更改
  • --pod-network-cidr=10.244.0.0/16 : k8s内部的pod节点之间网络可以使用的IP段,不能和service-cidr写一样,如果不知道怎么配,就先用这个10.244.0.0/16

 如果出现报错,重置

kubeadm reset

成功后,一定要复制最后一句话

kubeadm join 192.168.40.128:6443 --token zyxhg5.ua8dwh4wx9dgrwzk --discovery-token-ca-cert-hash sha256:70d215908d3fefe90b0ca2d00eed5342df3eb083862dd7ed91a105972ac82f29

如果没有复制,可以重新获取

kubeadm token create --print-join-command

复制权限文件(Master)

su - root
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

安装Flannel网络插件(Master)

 

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

网络可能会很慢,多试几次

加入集群(Node)

这个步奏就是在子结点上,执行上面主节点初始化时获取的 join 指令 

复制权限文件(Node)

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

查看所有节点(ALL)

kubectl get nodes

 

posted @ 2023-06-23 13:28  张永峰z  阅读(77)  评论(0编辑  收藏  举报