tnblog
首页
视频
资源
登录

Centos7 安装k8s 1.25.0

7421人阅读 2022/10/27 15:06 总访问:3467009 评论:0 收藏:0 手机
分类: 容器编排

Kubernetes

Centos7 安装k8s 1.25.0

安装包


链接: https://pan.baidu.com/s/1H3M8fo3hh_qj4bJFifLRIQ 密码: psha

安装containerd

  1. yum install ntpdate -y
  2. ntpdate ntp.aliyun.com
  3. # 修改你的网卡ip设置为静态(我这里是eth0)你们的自己看
  4. vim /etc/sysconfig/network-scripts/ifcfg-eth0
  5. service network restart


将BOOTPROTO参数设置为none,并添加好自己的IP与网关地址,网关地址请根据自己的虚拟机为主。
注意设置DNS,我这里没设置不然拉不了镜像,coredns起来不了。

  1. # Generated by parse-kickstart
  2. DEVICE="eth0"
  3. IPV6INIT="yes"
  4. BOOTPROTO="none"
  5. UUID="cd2966b9-8eb4-42bc-8cf5-ec145c343ce9"
  6. ONBOOT="yes"
  7. IPADDR="10.211.55.7"
  8. PREFIX="24"
  9. GATEWAY="10.211.55.1"
  10. DNS1=114.114.114.114
  11. DNS2=8.8.8.8

  1. ls
  2. clear
  3. pwd
  4. df -h
  5. mkdir /k8s
  6. cd /k8s/
  7. # 将我的所有包放到这个目录下
  8. cp containerd.service /etc/systemd/system/containerd.service
  9. clear
  10. ls
  11. tar Cxzvf /usr/local containerd-1.6.9-linux-amd64.tar.gz
  12. cat /etc/systemd/system/containerd.service
  13. clear
  14. systemctl enable --now containerd
  15. install -m 755 runc.amd64 /usr/local/sbin/runc
  16. tar zxvf libseccomp-2.5.4.tar.gz
  17. cd libseccomp-2.5.4/
  18. yum install gperf -y
  19. gpg --verify file.asc file
  20. ./configure
  21. make
  22. make install
  23. cd ..
  24. chmod +x runc.amd64
  25. install -m 755 runc.amd64 /usr/local/sbin/runc
  26. runc -v
  27. mkdir -p /home/cni-plugins
  28. tar Cxzvf /home/cni-plugins cni-plugins-linux-amd64-v1.1.1.tgz
  29. mkdir -p /home/cni-tools
  30. mkdir -p /etc/cni/net.d
  31. cp 10-mynet.conf /etc/cni/net.d/10-mynet.conf
  32. cp 99-loopback.conf /etc/cni/net.d/99-loopback.conf
  33. tar Cxzvf /home/cni-tools cni-1.1.2.tar.gz
  34. cd script/
  35. chmod +x ./*.sh
  36. wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  37. yum -y install jq
  38. sudo CNI_PATH=/home/cni-plugins ./priv-net-run.sh echo "Hello World"

安装阿里云镜像

  1. cat <<EOF > /etc/yum.repos.d/kubernetes.repo
  2. [kubernetes]
  3. name=Kubernetes
  4. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
  5. enabled=1
  6. gpgcheck=1
  7. repo_gpgcheck=1
  8. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  9. EOF
  10. setenforce 0
  11. yum install -y --nogpgcheck kubelet-1.25.3-0 kubeadm-1.25.3-0 kubectl-1.25.3-0
  12. systemctl enable kubelet && systemctl start kubelet
  13. kubelet --version
  14. # 查看需要的镜像
  15. kubeadm config images list


更具不同的节点进行配置.

  1. hostnamectl set-hostname k8s-125-master
  2. hostnamectl set-hostname k8s-125-node1
  3. hostnamectl set-hostname k8s-125-node2
  1. # 关闭防火墙
  2. #关闭防火墙和关闭SELinux
  3. systemctl stop firewalld
  4. systemctl disable firewalld
  5. setenforce 0 # 临时关闭
  6. vim /etc/sysconfig/selinux #永久关闭
  7. # 改为SELINUX=disabled
  8. # 所有节点关闭swap
  9. swapoff -a #临时关闭
  10. vim /etc/fstab #永久关闭
  11. #注释掉以下字段
  12. # /dev/mapper/cl-swap swap swap defaults 0 0
  13. # 配置内核
  14. cat > kubernetes.conf <<EOF
  15. net.bridge.bridge-nf-call-iptables=1
  16. net.bridge.bridge-nf-call-ip6tables=1
  17. net.ipv4.ip_forward=1
  18. net.ipv4.tcp_tw_recycle=0
  19. vm.swappiness=0
  20. vm.overcommit_memory=1
  21. vm.panic_on_oom=0
  22. fs.inotify.max_user_instances=8192
  23. fs.inotify.max_user_watches=1048576
  24. fs.file-max=52706963
  25. fs.nr_open=52706963
  26. net.ipv6.conf.all.disable_ipv6=1
  27. net.netfilter.nf_conntrack_max=2310720
  28. EOF
  29. #将优化内核文件拷贝到/etc/sysctl.d/文件夹下,这样优化文件开机的时候能够被调用
  30. cp kubernetes.conf /etc/sysctl.d/kubernetes.conf
  31. #手动刷新,让优化文件立即生效
  32. modprobe br_netfilter
  33. modprobe ip_conntrack
  34. sysctl -p /etc/sysctl.d/kubernetes.conf
  1. # kube-proxy 开启ipvs的前置条件【极其重要】
  2. # 安装ipvsadm工具
  3. yum install ipset ipvsadm -y
  4. cat > /etc/sysconfig/modules/ipvs.modules <<EOF
  5. #!/bin/bash
  6. modprobe -- ip_vs
  7. modprobe -- ip_vs_rr
  8. modprobe -- ip_vs_wrr
  9. modprobe -- ip_vs_sh
  10. modprobe -- nf_conntrack_ipv4
  11. EOF
  12. # 添加文件权限
  13. chmod 755 /etc/sysconfig/modules/ipvs.modules && bash
  14. /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
  15. # 加载 br_netfilter模块【默认是不加载的,所以需要手动加载】
  16. modprobe br_netfilter
  17. cd /k8s
  18. ctr -n k8s.io images import kube-apiserver-1-25-3.tar
  19. ctr -n k8s.io images import kube-controller-manager-1-25-3.tar
  20. ctr -n k8s.io images import kube-scheduler-1-25-3.tar
  21. ctr -n k8s.io images import kube-proxy-1-25-3.tar
  22. ctr -n k8s.io images import pause-3-8.tar
  23. ctr -n k8s.io images import pause-3-6.tar
  24. ctr -n k8s.io images import etcd-3-5-4-0.tar
  25. ctr -n k8s.io images import coredns-1-9-3.tar
  26. ctr -n k8s.io images ls
  27. crictl images

master

  1. $ kubeadm init --help
  2. # 这样可以
  3. kubeadm init --kubernetes-version=1.25.3 \
  4. --image-repository registry.aliyuncs.com/google_containers \
  5. --apiserver-advertise-address=10.211.55.7 \
  6. --service-cidr=10.96.0.0/12 \
  7. --pod-network-cidr=192.168.0.0/16
  8. # 这样也可以 只是需要修改一下里面的apiserver-advertise-address地址
  9. # 生成文件命令:kubeadm config print init-defaults --kubeconfig ClusterConfiguration > kubeadm.yml
  10. kubeadm init --config=kubeadm.yml --upload-certs | tee kubeadm-init.log
  11. #注意:
  12. # kubernetes-version的值 即为 kubelet --version获得的值
  13. # apiserver-advertise-address这个地址必须是master机器的IP
  14. # 国内可以设置阿里云的--image-repository registry.aliyuncs.com/google_containers \
  15. # 如果有报错,可以执行以下命令进行排查【一般都是因为外网原因拉取不到镜像,可以拉取国内镜像代替】
  16. systemctl status kubelet -l
  17. systemctl status containerd -l
  18. # 查看安装k8s所需的镜像列表
  19. kubeadm config images list
  20. # 解决报错后,要再次运行 kubeadm init,必须首先卸载集群
  21. kubeadm reset
  22. #成功示例:
  23. Your Kubernetes control-plane has initialized successfully!
  24. To start using your cluster, you need to run the following as a regular user:
  25. mkdir -p $HOME/.kube
  26. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  27. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  28. Alternatively, if you are the root user, you can run:
  29. export KUBECONFIG=/etc/kubernetes/admin.conf
  30. You should now deploy a pod network to the cluster.
  31. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  32. https://kubernetes.io/docs/concepts/cluster-administration/addons/
  33. Then you can join any number of worker nodes by running the following on each as root:
  34. # 这一行生成的临时令牌[24h过期]是用来加入node节点
  35. kubeadm join 192.168.168.201:6443 --token pq5otc.ker47p9nails0xsf \
  36. --discovery-token-ca-cert-hash sha256:7a256694edafdbd21b52ca729b0b7ebc142c7fe8435657a6115b95019d2a3178
  1. mkdir -p $HOME/.kube
  2. sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  3. sudo chown $(id -u):$(id -g) $HOME/.kube/config
  4. export KUBECONFIG=/etc/kubernetes/admin.conf
  5. # 验证
  6. kubectl get pods --all-namespaces

安装网络插件

  1. curl https://docs.projectcalico.org/manifests/calico.yaml -O
  2. # 把calico.yaml里pod所在网段改成kubeadm init时选项--pod-network-cidr所指定的网段
  3. # 我们这里默认就是192.168.0.0所以不需要
  4. # sed -i 's/192.168.0.0/10.244.0.0/g' calico.yaml
  5. kubectl apply -f calico.yaml
  6. # 验证
  7. kubectl get pods --all-namespaces
  1. # 生成新的令牌节点
  2. kubeadm token create --print-join-command
  3. # 在其他节点请执行,加入集群中
  4. kubeadm join 10.211.55.7:6443 --token dhuxe5.oiuoh0ux84dpfs7d --discovery-token-ca-cert-hash sha256:5592e3493fe04e46223023c9232601cb83f3c1d970dd71a3aac357d480087533


启动 IPVS

  1. # 修改mode 为ipvs
  2. kubectl edit -n kube-system cm kube-proxy
  3. # mode: "ipvs"
  4. # 通过下面的命令删除proxy
  5. kubectl get pod -n kube-system |grep kube-proxy |awk '{system("kubectl delete pod "$1" -n kube-system")}'
  6. # 然后我们可以查看proxy 发现ipvs已经启动了
  7. kubectl get pod -n kube-system | grep kube-proxy
  8. kubectl logs -n kube-system kube-proxy-4c5xj
  9. # 也可以这样查看
  10. ipvsadm -Ln


使用crictl发现报错。

  1. crictl ps


原因:未配置endpoints。
指定containerd.sock解决。

  1. crictl config runtime-endpoint unix:///run/containerd/containerd.sock
  2. crictl config image-endpoint unix:///run/containerd/containerd.sock


重启主机后master kubelet报错:unknown service runtime.v1alpha2.RuntimeService
很可能是因为您的 contaienrd 默认配置文件有问题,通常会有一个 disabled_plugins 里面默认配置了 cri。配置文件在 /etc/containerd/config.toml。手动删掉cri;然后重启containerd 即可。

  1. rm /etc/containerd/config.toml
  2. systemctl restart containerd
  3. vim /etc/containerd/config.toml
  1. disabled_plugins = []
  2. # 同时建议添加 防止 cgroup 问题
  3. [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  4. [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
  5. SystemdCgroup = true
  6. # 同时建议添加 pause 镜像配置,国内访问不到 默认的地址
  7. [plugins."io.containerd.grpc.v1.cri"]
  8. sandbox_image = "k8s.m.daocloud.io/pause:3.7"
  1. systemctl daemon-reload
  2. systemctl restart containerd


发现coredns启动不了是由于/etc/resolv.conf没有配置出现的问题。
可以通过如下方式进行解决。

  1. kubectl edit cm coredns -n kube-system
  1. apiVersion: v1
  2. data:
  3. Corefile: |
  4. .:53 {
  5. errors
  6. health {
  7. lameduck 5s
  8. }
  9. ready
  10. kubernetes cluster.local in-addr.arpa ip6.arpa {
  11. pods insecure
  12. fallthrough in-addr.arpa ip6.arpa
  13. ttl 30
  14. }
  15. prometheus :9153
  16. forward . 114.114.114.114 {
  17. max_concurrent 1000
  18. policy sequential
  19. }
  20. cache 30
  21. loop
  22. reload
  23. loadbalance
  24. }
  25. kind: ConfigMap
  26. metadata:
  27. creationTimestamp: "2022-10-27T05:37:37Z"
  28. name: coredns
  29. namespace: kube-system
  30. resourceVersion: "23720"
  31. uid: 21950342-42d9-4c0e-a610-ce1e5930a8a5


然后再删除coredns便重启成功


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

Centos7安装RabbitMq

CentOS7安装RabbitMq[TOC] 安装Erlang 通过访问Erlang下载链接进行下载:https://www.erlang.org/downloads 使用ro...

Centos7搭建高可用的RabbitMq集群

Centos7搭建高可用的RabbitMq集群[TOC] 环境准备 在三台CentOS7中搭建好Rabbitmq,如果不会搭建请参考:https://www.tnblo...

Centos7 设置.net core开机自启动服务

前言欢迎使用tnblog注意使用模板的时候选择保留原有内容哦,不然会不小心替换你的已经写好的内容哦。我希望有个如你一般的人...

Centos7 安装设置redis

还是很喜欢你,性情善良,待人真诚,像日光洒满天地,温柔惬意一、安装gcc依赖由于 redis 是用 C 语言开发,安装之前必先确...

Centos7安装redis 集群遇到的问题总结

1 、问题一 centos7 redis (error) NOAUTH Authentication required. 需要验证(设置的密码) redis-cli -h ip地址 -a ...

Centos7安装k8s(基于kubeadm)

Centos7安装k8s(基于kubeadm)[TOC] 下载相关包 链接:https://pan.baidu.com/s/1H9MuZsf28f_3uyVHBUS8jQ提取码:w9tv ...

解决 VMware Centos7 虚拟机 ping 通外网的问题

虚拟机上 ping 命令通不通外网的问题在 vi /etc/sysconfig/network-scripts/ifcfg-ens33 不要设置 DNS在 vi /etc/resolv.co...

virtualbox虚拟机Centos7设置固定IP,并保证主机宿主机通信与虚拟机访问外网

视频演示地址:https://www.tnblog.net/edu/play?des=sjqkecmklq视频演示 修改网卡设置(这样设置ip可以固定但是虚拟机无...

新手 Centos7.9 安装 Jenkins

查看是否有Jenkinsrpm -qa |grep jenkins卸载rpm -e jenkins删除jenkins残留文件find / -iname jenkins | xargs -n 1000 rm...

微信密码框提示下载并安装安全控件

登录微信商户平台 输入密码时 一直提示 微信密码框提示下载并安装安全控件 点击下载重复下载了很多次 依然没有用解决办...

.NET Windows服务发布、安装、卸载、监听脚本。服务调试

一、脚本 为方便不用每次都去写安装卸载的脚本1.安装脚本@echooff @echo开始安装【服务】 %SystemRoot%\Microsoft.NET\Fr...

Python学习 1-安装

Ptyhon非常简单易用的面向对象的脚本语言,跨平台 入门简单python分2个版本 Python2、Python3。Python 2.7 将于 2020 年结...

重新安装IIS

Win+R--&gt;cmd--&gt;输入命令:cd\--&gt;回车(回到C盘根目录)--&gt; 输入:cd C:\Windows\Microsoft.NET\Framework\v4.0.3...

超详细VMware安装及破解

https://blog.csdn.net/newbie_907486852/article/details/79824042

Redis基础安装操作-windows版

一、下载 redis官方没有提供windows版本,需要从微软的git下载releases版二、安装,启动1.解压出来 启动服务 可能会双击会...
这一世以无限游戏为使命!
排名
2
文章
634
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术