阿里云服务器安装k8s1.27.4

一.环境准备

环境介绍

1.服务器阿里云服务器
2.镜像为centos 7.9
3.内核版本3.10.0-1160.105.1.el7.x86_64
4.docker 版本 Docker version 24.0.7, build afdd53b
5.k8s版本 Client Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.4", GitCommit:"fa3d7990104d7c1f16943a67f11b154b71f6a132", GitTreeState:"clean", BuildDate:"2023-07-19T12:20:54Z", GoVersion:"go1.20.6", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v5.0.1

  • master,woker节点都要执行

1.安装必要工具

	yum -y install vim*
	yum -y install yum-utils
	yum -y install wget

2.关闭防火墙

#关闭防火墙
systemctl stop firewalld
#禁止防火墙自启
systemctl disable firewalld

3.关闭selinux、swap

#永久关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config 
#永久关闭swap分区:
sed -ri 's/.*swap.*/#&/' /etc/fstab
#重启
reboot

4.设置主机名,添加hosts文件

#设置主机名 如k8s的master设置为:
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-worker
#添加hosts文件 每个节点都添加(这里的ip换成自己的)
cat >> /etc/hosts << EOF
172.17.249.124 k8s-master
172.17.249.125 k8s-worker
EOF

5.将桥接的IPv4流量传递到iptables的链

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

sudo modprobe overlay
sudo modprobe br_netfilter

# 设置所需的 sysctl 参数,参数在重新启动后保持不变
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

# 应用 sysctl 参数而不重新启动
sudo sysctl --system

lsmod | grep br_netfilter
lsmod | grep overlay

sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward


# 如果init时仍提示iptables错误请执行
echo "1">/proc/sys/net/bridge/bridge-nf-call-iptables
echo "1">/proc/sys/net/ipv4/ip_forward

6.时间同步

yum install ntpdate -y
ntpdate time.windows.com

7.安装指定版本docker和cri-dockerd

7.1安装docker版本Docker version 24.0.7, build afdd53b

# 设置存储库,这里直接使用官方源不需要更换为国内源。
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 启动Docker,设置开机自启动,查看Docker状态为active (running) 即为启动成功。

 sudo systemctl start docker
 sudo systemctl enable docker
 sudo systemctl status docker
 
# 通过运行映像hello-world,验证 Docker 引擎安装是否成功
docker run hello-world

7.2安装cri-dockerd

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd-0.3.4-3.el7.x86_64.rpm # 通过wget下载最新版cri-dockerd #这块下载会特别慢
rpm -ivh cri-dockerd-0.3.4-3.el7.x86_64.rpm
# 重载系统守护进程→设置cri-dockerd自启动→启动cri-dockerd
systemctl daemon-reload # 重载系统守护进程
systemctl enable cri-docker.socket cri-docker # 设置cri-dockerd自启动
systemctl start cri-docker.socket cri-docker # 启动cri-dockerd
systemctl status cri-docker.socket

7.3设置docker镜像加速,cri-dockerd设置国内镜像加速。

# 设置docker镜像加速
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "exec-opts": ["native.cgroupdriver=systemd"],    
  "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
  "insecure-registries": [ "registry-1.docker.io"]
}
EOF
 # cri-dockerd设置国内镜像加速。
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.7
systemctl daemon-reload && systemctl restart docker cri-docker.socket cri-docker # 重启Docker组件,这个地方是个小技巧,连写会方便很多
systemctl status docker cir-docker.socket cri-docker # 检查Docker组件状态

8.添加阿里云的YUM软件源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[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

二.安装kubernetes

1.安装kubelet-1.27.4 kubeadm-1.27.4 kubectl-1.27.4

yum -y install kubelet-1.27.4 kubeadm-1.27.4 kubectl-1.27.4 --disableexcludes=kubernetes
设置kubelet自启动

sudo systemctl enable --now kubelet

2.安装runc,这是Kubernetes必须要的运行环境。

从这个链接下载之后上传到服务器上面
https://github.com/opencontainers/runc/releases
  • master节点执行

3.初始化k8smaster节点

kubeadm init --node-name=k8s-master --image-repository=registry.aliyuncs.com/google_containers --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=172.17.249.124 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
 
 # 参数解析
 --image-repository=registry.aliyuncs.com/google_containers # 将下载容器镜像源替换为阿里云,否则因为网络原因会导致镜像拉不下来,一定会执行不成功。
--cri-socket=unix:///var/run/cri-dockerd.sock # 这是指定容器运行时,因为containerd也是Docker的组件之一,下载Docker会一并将containerd下载下来,在执行初始化时当Kubernetes检测到有多个容器运行时环境,就必须要手动选择一个。这里也可以看出containerd实际上比Docker更轻量得多。
--apiserver-advertise-address=192.168.56.50 # 为API server设置广播地址,这里选择本机的ipv4地址,这里不希望API SERVER设置在其他node上的话就不要改为其他地址。
--pod-network-cidr=10.244.0.0/16 # 指明 pod 网络可以使用的 IP 地址段,暂时不清楚的可以先不管就用这个值。
--service-cidr=10.96.0.0/12 # 为服务的虚拟 IP 地址另外指定 IP 地址段,暂时不清楚的可以先不管就用这个值。
看到这句话表示Kubernetes安装成功
Your Kubernetes control-plane has initialized successfully!

然后执行下面这段代码

# 非root用户请执行
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
# root用户直接执行
$ export KUBECONFIG=/etc/kubernetes/admin.conf # 临时生效,重启后失效,不推荐。
$ echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >>  ~/.bash_profile # 永久生效,执行kubeadm reset后再次init也无需再次执行这条命令
$ source ~/.bash_profile # 执行永久生效命令之后需要source一下使其生效
$ echo $KUBECONFIG # 检测配置是否生效
/etc/kubernetes/admin.conf

4.安装配置网络插件——这里使用flannel

flannel 下载地址
https://github.com/opencontainers/runc/releases

5.worker加入master

  • 只在worker执行
#先拷贝配置到node节点
scp /etc/kubernetes/admin.conf 172.17.249.125:/etc/kubernetes/
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >>  ~/.bash_profile
source ~/.bash_profile

# 使用命令
kubeadm join 172.17.249.124:6443 --token nxz1sb.imldiqlvdsc5w9og --discovery-token-ca-cert-hash sha256:366be39bffcf7acabf71f125364bdcda97b3ee41a88fdb20a3565ea4be17d1ae --cri-socket unix:///var/run/cri-dockerd.sock

# 验证
在master节点
kubectl get node
出现worker节点并且是ready状态表示k8s集群安装完成
  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值