Kubernetes 详细安装教程


前言

这是本人学习K8s之路的复习笔记,把学到的东西记录下来,分享出去才算学会了,
本文章学习路线基于阿良老师的书籍《Kubernetes企业级云原生运维实战》。

一、需要准备的软件

自行百度下载安装或使用平替软件。

  1. VMware
  2. Xshell
  3. 访问github等网址的网络

二、安装系统

推荐使用 CentOS 或 Anolis系统
阿里CentOS镜像地址 阿里Anolis镜像地址
华为CentOS镜像地址
本文章将使用CentOS 7版本操作。
安装步骤请自行百度或站内搜索。

三、配置系统环境

注意:以下所有命令确保每个虚拟机都配置 除IP以及hostname外

yum update -y #更新系统
yum install -y wget #安装wget
cd /etc/yum.repos.d/ 进入yum源目录
cp CentOS-Base.repo CentOS-Base.repo.backup #备份原源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #安装阿里源
cat CentOS-Base.repo #查看新源内容
yum clean all #清理yum缓存
yum makecache #生成新缓存
yum install -y vim  #安装vim工具

#关闭防火墙
systemctl stop firewalld && systemctl disable firewalld && systemctl status firewalld && iptables -F 
#关闭swap分区
swapoff -a && sysctl -w vm.swappiness=0
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab #永久
cat /etc/fstab
#关闭seLinux
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
cat /etc/selinux/config

做完了以上工作,请将此虚拟机关机并克隆最少三个。
更改克隆后的虚拟机IP分别为(可按实际情况自己分配IP,此处只做举例)
192.168.X.71
192.168.X.72
192.168.X.73
并按照下面的代码将三台或更多虚拟机更名为 k8s-master k8s-node1 k8s-node2 …

hostnamectl set-hostname [YOUR NEW HOSTNAME] #更改hostname
#如: hostnamectl set-hostname k8s-master
#追加host
#给所有本集群的虚拟机追加host
cat >> /etc/hosts << EOF
192.168.51.71 k8s-master
192.168.51.72 k8s-node1
192.168.51.73 k8s-node2
EOF
#某些 Kubernetes 网络插件可能使用网络桥接(Bridge),为了确保网络桥接的数据包经过 Iptables 处理,需要启用相关的内核参数
#可通过以下命令自动生成文件,或手动创建内容

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
sysctl --system #生效

#同步时间

yum install ntpdate -y
ntpdate time.windows.com

四、安装Docker

以下命令均使用root账号进行操作

在所有节点上安装并启动 Docker

卸载旧版本docker

#方法1
yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-engine
#方法2
yum remove docker-ce docker-ce-cli containerd.io

安装镜像配置

yum install -y yum-utils device-mapper-persistent-data lvm2 #设置仓库
yum-config-manager --add-repo  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #使用阿里源地址

安装指定版本Docker

yum install -y docker-ce-24.0.0 #安装指定版本docker (本文使用此版本)
yum install docker-ce #安装最新版本docker

#启动并设置开机启动项
systemctl start docker
systemctl enable docker

配置Docker镜像加速器

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["替换为你的实际加速地址(自己百度找,阿里云的docker加速仅限于阿里云服务器,更多的加速器已经被ban了)"]
}
EOF
systemctl daemon-reload
systemctl restart docker

五、在所有节点安装并启动 cri-docker

cri-docker下载地址 找到适用于你系统平台版本的安装包,下载该安装包,然后将其上传到所有节点上并进行安装。
本文使用 cri-dockerd-0.3.2-3.el7.x86_64.rpm 进行安装。

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

#安装完成后,修改 Systemd 服务文件,将依赖的 Pause 镜像指定为阿里云镜像地址:
vim /usr/lib/systemd/system/cri-docker.service
···
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
···

#启动并设置开机启动项
systemctl start cri-docker
systemctl enable cri-docker

六、安装 kubeadm 和 kubelet

在安装k8s之前,请确认已经将上面提到的/etc/hosts 以及 /etc/sysctl.d/k8s.conf 配置成功。

1.添加阿里云源

vim /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

2.安装指定版本kubeadm kubelet

yum install -y kubeadm-1.28.0 kubelet-1.28.0

#kubeadm 仅是一个集群搭建工具,不涉及启动。kubelet 是一个守护进程程序,由kubeadm 在搭建过程中自动启动,这里仅设置开机启动即可
systemctl enable kubelet

3.部署master节点

在主节点(master)执行以下命令

 kubeadm init \
 --apiserver-advertise-address=192.168.X.71 \
 --image-repository=registry.aliyuncs.com/google_containers \
 --kubernetes-version=v1.28.0 \
 --pod-network-cidr=10.244.0.0/16 \
 --service-cidr=10.96.0.0/12 \
 --cri-socket=unix:///var/run/cri-dockerd.sock 

# --apiserver-advertise-address:指定 API Server 监听的 IP 地址。如果没有设置,则将使用默认的网络接口。
# --image-repository:指定镜像仓库地址。默认值为“registry.k8s.io”,但该仓库在中国无法访问,因此这里指定阿里云仓库。
# --kubernetes-version:指定 Kubernetes 版本。
# --pod-network-cidr:指定 Pod 网络的 CIDR 地址范围。
# --service-cidr:指定 Service 网络的 CIDR 地址范围。
# --cri-socket:指定 kubelet 连接容器运行时的 UNIX 套接字文件。

#输出结果

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.164.71:6443 --token qpocfe.myfmt4119zmlzv0o \
	--discovery-token-ca-cert-hash sha256:6badaa2fc2aa3626229c7e00b48b7a8d364e96e1380ef398007d25d0991d1bae

出现以上提示,即代表安装完成,根据提示执行操作即可:

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

3.部署Node节点

在所有的工作节点执行以下命令:

kubeadm join 192.168.164.71:6443 --token qpocfe.myfmt4119zmlzv0o \
	--discovery-token-ca-cert-hash sha256:6badaa2fc2aa3626229c7e00b48b7a8d364e96e1380ef398007d25d0991d1bae \
    --cri-socket=unix:///var/run/cri-dockerd.sock #必须添加此参数

#输出结果
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.

Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

以在 Master 节点上执行“kubectl get nodes”命令来查看节点

kubectl get nodes

#输出结果

NAME         STATUS   ROLES           AGE     VERSION
k8s-master   Ready    control-plane   2m49s   v1.28.0
k8s-node1    Ready    <none>          56s     v1.28.0
k8s-node2    Ready    <none>          49s     v1.28.0

4.部署网络插件(Calico)

在上述结果中,节点状态显示为“NotReady”,表示该节点尚未准备就绪。这是由于kubelet 服务未发现网络插件导致的,所以我们需要安装一个网络插件,常见的网络插件包括 Calico、Flannel、Cilium 等,这里选择使用 Calico 作为 Kubernetes 网
络插件。

#在[主节点]安装Calico插件
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/tigera-operator.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/custom-resources.yaml
或自行下载到本地后上传到服务器。
[root@k8s-master ~]# kubectl create -f tigera-operator.yaml
[root@k8s-master ~]# vim custom-resources.yaml

...
    ipPools:
    - blockSize: 26
      cidr: 10.244.0.0/16  #更改此处为修改此值,与“kubeadm init”命令中指定的 Pod 网络CIDR 地址(--pod-network-cidr)范围保持一致
      encapsulation: VXLANCrossSubnet
...
[root@k8s-master ~]# kubectl create -f custom-resources.yaml

输出结果
输出结果

稍等片刻(三四分钟,根据实际网络情况而定)后,查看pod对象:

[root@k8s-master ~]#  kubectl get pods -n calico-system
#输出结果
NAME                                       READY   STATUS    RESTARTS   AGE
calico-kube-controllers-694b7955b5-7t447   1/1     Running   0          5m52s
calico-node-ndf8c                          1/1     Running   0          5m52s
calico-node-wn2dd                          1/1     Running   0          5m52s
calico-node-z6vh6                          1/1     Running   0          5m52s
calico-typha-68765947d7-gltbz              1/1     Running   0          5m52s
calico-typha-68765947d7-m2kc9              1/1     Running   0          5m52s
csi-node-driver-fv7b2                      2/2     Running   0          5m52s
csi-node-driver-h86q7                      2/2     Running   0          5m52s
csi-node-driver-tqnx6                      2/2     Running   0          5m52s

#再次查看node节点 发现已经是Ready状态了。

[root@k8s-master ~]# kubectl get nodes
NAME         STATUS   ROLES           AGE   VERSION
k8s-master   Ready    control-plane   31m   v1.28.0
k8s-node1    Ready    <none>          29m   v1.28.0
k8s-node2    Ready    <none>          29m   v1.28.0


总结

以上就是k8s安装的全部内容,希望对看到这篇文章的你有所帮助。
后续可以自己查资料的方式安装 Dashboard 这是官方开发的一个 Web 管理系统。通过它,你可以管理集群资源、查看应用概览、查看容器日志和访问容器等操作
更多操作命令可以看下面这篇文章。
k8s命令大全

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值