admin管理员组文章数量:1559079
文章目录
- 从0开始安装k8s1.25
- 一、准备工作
- 1、安装vmware和虚拟机centos
- 2、虚拟机centos环境初始化
- 3、安装容器运行时containerd
- 二、安装kubelet kubeadm kubectl
- 1、使用阿里云镜像安装
- 2、使用kubeadm创建集群
- 3、初始化master节点
- 4、安装 pod 网络附加组件
- 5、加入node节点
- 6、验证是否安装成功
从0开始安装k8s1.25
相关链接:
vmware九游会真人第一品牌官网:https://www.vmware/
containerd九游会真人第一品牌官网:https://containerd.io/
kubernetes九游会真人第一品牌官网: https://kubernetes.io/
阿里云镜像九游会真人第一品牌官网:https://developer.aliyun/mirror/
caclio九游会真人第一品牌官网:https://www.tigera.io/project-calico/
containerd【轻量级容器管理工具】:https://blog.csdn/qq_41822345/article/details/126677121
安装高可用版k8s集群:https://mp.weixin.qq/s/lqasax-2-t4qpzgccoqf-a
一、准备工作
1、安装vmware和虚拟机centos
假设现在我们有了vmware,并在其中安装了三台虚拟机。
虚拟机安装流程:https://blog.csdn/qq_41822345/article/details/105567852
2、虚拟机centos环境初始化
下面进行系统环境的初始化。
linux系统初始化环境【docker安装部分可以选择跳过】:https://blog.csdn/qq_41822345/article/details/118096213
3、安装容器运行时containerd
容器运行时containerd安装【弃用docker】,所有主机都需要安装 容器运行时。
containerd安装:https://blog.csdn/qq_41822345/article/details/126677121
二、安装kubelet kubeadm kubectl
所有主机都需要安装 kubelet和kubeadm
kubernetes九游会真人第一品牌官网: https://kubernetes.io/
阿里云镜像九游会真人第一品牌官网:https://developer.aliyun/mirror/
kubernetes官方镜像安装一般会报错【无法解析url】:
failure: repodata/repomd.xml from kubernetes: [errno 256] no more mirrors to try.
https://packages.cloud.google/yum/repos/kubernetes-el7-x86_64/repodata/repomd.xml: [errno 14] curl#7 - "failed connect to packages.cloud.google:443; connection refused"
1、使用阿里云镜像安装
# 阿里云最新镜像[2022-0901]
$ cat <<eof > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=kubernetes
baseurl=https://mirrors.aliyun/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun/kubernetes/yum/doc/rpm-package-key.gpg
eof
$ setenforce 0
# ps: 由于九游会真人第一品牌官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时需要跳过gpg检查
$ yum install -y --nogpgcheck kubelet kubeadm kubectl
$ systemctl enable kubelet && systemctl start kubelet
# 安装完成验证
$ kubelet --version
kubernetes v1.25.0
2、使用kubeadm创建集群
先初始化一些必要配置【所有机器】
# 设计hostname
$ hostnamectl set-hostname k8s201
$ hostnamectl set-hostname k8s202
$ hostnamectl set-hostname k8s203
$ hostname
k8s201
$ hostname
k8s202
$ hostname
k8s203
#以方便互相访问
$ cat >>/etc/hosts<<eof
192.168.168.201 k8s201
192.168.168.202 k8s202
192.168.168.203 k8s203
eof
#关闭防火墙和关闭selinux
$ systemctl stop firewalld
$ systemctl disable firewalld
$ setenforce 0 # 临时关闭
$ vim /etc/sysconfig/selinux #永久关闭
# 改为selinux=disabled
# 所有节点关闭swap
$ swapoff -a #临时关闭
$ vim /etc/fstab #永久关闭
#注释掉以下字段
/dev/mapper/cl-swap swap swap defaults 0 0
#设置允许路由转发,不对bridge的数据进行处理,先创建文件
$ vim /etc/sysctl.d/k8s.conf
#内容如下:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
# 执行文件
$ sysctl -p /etc/sysctl.d/k8s.conf
# kube-proxy 开启ipvs的前置条件【极其重要】
# 安装ipvsadm工具
$ yum install ipset ipvsadm -y
$ cat > /etc/sysconfig/modules/ipvs.modules <<eof
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
eof
# 添加文件权限
$ chmod 755 /etc/sysconfig/modules/ipvs.modules && bash
$ /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
# 加载 br_netfilter模块【默认是不加载的,所以需要手动加载】
$ modprobe br_netfilter
3、初始化master节点
kubeadm init
首先运行一系列预检查以确保机器 准备运行 kubernetes。这些预检查会显示警告并在错误时退出。然后 kubeadm init
下载并安装集群控制平面组件。这可能会需要几分钟。
$ kubeadm init --help
$ kubeadm init --kubernetes-version=1.25.0 \
--apiserver-advertise-address=192.168.168.201 \
--image-repository registry.aliyuncs/google_containers \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
#注意:
# kubernetes-version的值 即为 kubelet --version获得的值
# apiserver-advertise-address这个地址必须是master机器的ip
# 如果有报错,可以执行以下命令进行排查【一般都是因为外网原因拉取不到镜像,可以拉取国内镜像代替】
$ systemctl status kubelet -l
$ systemctl status containerd -l
# 查看安装k8s所需的镜像列表
$ kubeadm config images list
# 通过查询拉取k8s所需的镜像,看缺哪些镜像
$ ctr -n k8s.io images ls | grep 镜像名
# 比如缺乏pause:3.6镜像
### 由于k8s.gcr.io 需要连外网才可以拉取到,导致 k8s 的基础容器 pause 经常无法获取。k8s docker 可使用代理服拉取,再利用 docker tag 解决问题
$ docker pull registry-hangzhou.aliyuncs/google_containers/pause:3.6
$ docker tag registry-hangzhou.aliyuncs/google_containers/pause:3.6 k8s.gcr.io/pause:3.6
#但是我们k8s集群中使用的cri是containerd。所以只能通过 docker tag 镜像,再使用 ctr 导入镜像.
$ docker save k8s.gcr.io/pause -o pause.tar
$ ctr -n k8s.io images import pause.tar
# 解决报错后,要再次运行 kubeadm init,必须首先卸载集群
$ kubeadm reset
#成功示例:
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:
# 这一行生成的临时令牌[24h过期]是用来加入node节点
kubeadm join 192.168.168.201:6443 --token pq5otc.ker47p9nails0xsf \
--discovery-token-ca-cert-hash sha256:7a256694edafdbd21b52ca729b0b7ebc142c7fe8435657a6115b95019d2a3178
配置可以运行 kubectl,请运行以下命令:
$ mkdir -p $home/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $home/.kube/config
$ sudo chown $(id -u):$(id -g) $home/.kube/config
# 验证
$ kubectl get pods --all-namespaces
4、安装 pod 网络附加组件
每个集群只能安装一个 pod 网络。这里安装calico网络。
相关链接:https://www.tigera.io/project-calico
$ curl https://docs.projectcalico/manifests/calico.yaml -o
# 把calico.yaml里pod所在网段改成kubeadm init时选项--pod-network-cidr所指定的网段
$ sed -i 's/192.168.0.0/10.244.0.0/g' calico.yaml
$ kubectl apply -f calico.yaml
# 验证
$ kubectl get pods --all-namespaces
namespace name ready status restarts age
kube-system calico-kube-controllers-58dbc876ff-bhmdv 1/1 running 0 2m39s
kube-system calico-node-9qppz 1/1 running 0 2m39s
kube-system coredns-c676cc86f-f4vwx 1/1 running 0 54m
kube-system coredns-c676cc86f-htq2v 1/1 running 0 54m
kube-system etcd-k8s201 1/1 running 1 54m
kube-system kube-apiserver-k8s201 1/1 running 0 54m
kube-system kube-controller-manager-k8s201 1/1 running 1 54m
kube-system kube-proxy-pn4k7 1/1 running 0 54m
kube-system kube-scheduler-k8s201 1/1 running 1 54m
5、加入node节点
通过在 kubectl get pods --all-namespaces
输出中检查 coredns pod 是否 running
来确认其是否正常运行。只有 coredns pod 启用并运行成功,才可以加入node节点。
$ kubectl get node
name status roles age version
k8s201 ready control-plane 54m v1.25.0
# 执行master节点初始化成功后的输出
$ kubeadm join 192.168.168.201:6443 --token pq5otc.ker47p9nails0xsf \
--discovery-token-ca-cert-hash sha256:7a256694edafdbd21b52ca729b0b7ebc142c7fe8435657a6115b95019d2a3178
# 验证
$ kubectl get node
name status roles age version
k8s201 ready control-plane 57m v1.25.0
k8s202 notready <none> 70s v1.25.0
# 再加入一个node节点
$ kubeadm join 192.168.168.201:6443 --token pq5otc.ker47p9nails0xsf \
--discovery-token-ca-cert-hash sha256:7a256694edafdbd21b52ca729b0b7ebc142c7fe8435657a6115b95019d2a3178
# 验证
$ kubectl get po --all-namespaces
namespace name ready status restarts age
kube-system calico-kube-controllers-58dbc876ff-bhmdv 1/1 running 0 17m
kube-system calico-node-9qppz 1/1 running 0 17m
kube-system calico-node-j28p5 1/1 running 0 11m
kube-system calico-node-jbwn7 1/1 running 0 12m
kube-system coredns-c676cc86f-f4vwx 1/1 running 0 69m
kube-system coredns-c676cc86f-htq2v 1/1 running 0 69m
kube-system etcd-k8s201 1/1 running 1 69m
kube-system kube-apiserver-k8s201 1/1 running 0 69m
kube-system kube-controller-manager-k8s201 1/1 running 1 69m
kube-system kube-proxy-8czn5 1/1 running 0 12m
kube-system kube-proxy-pn4k7 1/1 running 0 69m
kube-system kube-proxy-vcgwv 1/1 running 0 11m
kube-system kube-scheduler-k8s201 1/1 running 1 69m
$ kubectl get node
name status roles age version
k8s201 ready control-plane 69m v1.25.0
k8s202 ready <none> 12m v1.25.0
k8s203 ready <none> 11m v1.25.0
完成
如果想安装高可用版k8s集群,可参考:https://mp.weixin.qq/s/lqasax-2-t4qpzgccoqf-a
6、验证是否安装成功
使用k8s启动一个deployment资源。
$ vim deploy-nginx.yaml
$ cat deploy-nginx.yaml
apiversion: apps/v1
kind: deployment
metadata:
name: nginx-deployment
spec:
selector:
matchlabels:
app: nginx
replicas: 3 # 告知 deployment 运行 3 个与该模板匹配的 pod
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerport: 80
$ kubectl apply -f deploy-nginx.yaml
deployment.apps/nginx-deployment created
$ kubectl get po
name ready status restarts age
nginx-deployment-7fb96c846b-6xxw8 1/1 running 0 6s
nginx-deployment-7fb96c846b-r2s9z 1/1 running 0 6s
nginx-deployment-7fb96c846b-tsmhh 1/1 running 0 6s
本文标签: 版本
j9九游会老哥俱乐部交流区的版权声明:本文标题:从0开始安装k8s1.25【最新k8s版本——20220904】 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1727356702a1110189.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论