文章目录

  • 部署环境准备
  • 环境修改
    • 修改hostname(各修改各的)
    • 修改hosts文件(master 和所有node )
    • 禁用swap(master 和所有node)
    • 修改内核参数(master 和所有node )
  • 安装 containerd
  • 安装k8s
    • 安装组件(master 和所有node )
    • 下载镜像(master 和所有node )
    • 集群配置(master)
    • 集群配置2
    • 集群配置3
    • 集群配置4
    • 集群配置5
    • node节点
  • 网络插件
  • 测试
  • 工具类学习
  • 参考

author: ningan123
date: ‘2022-11-28 22:53’
updated: ‘2022-12-17 11:30’

搭建虚拟机可以参考我的另一篇博文:【网络成长记】VMware16.2.2中创建ubuntu22.04.1虚拟机+修改静态ip+换源+mobaxterm远程连接+修改命令提示符颜色(cka考试虚拟机搭建)

部署环境准备

ubuntu22.04虚拟机3台

环境修改

修改hostname(各修改各的)

hostnamectl set-hostname k8s-master // master节点
hostnamectl set-hostname k8s-node1  // node1节点
hostnamectl set-hostname k8s-node2  // node2节点

重启虚拟机,可以看到hostname已经生效了

修改hosts文件(master 和所有node )

修改/etc/hosts文件,添加下面内容

cat >> /etc/hosts << EOF
192.168.1.100 k8s-master
192.168.1.101 k8s-node1
192.168.1.102 k8s-node2
EOF

禁用swap(master 和所有node)

执行 free -m 命令检测: 如果Swap这一行不是0,则说明虚拟内存swap被开启了,需要关闭。

sudo swapoff -a
sudo sed -i '/swap/ s/^\(.*\)$/#\1/g' /etc/fstab
# -i 插入修改模式,g 标识符表示全局查找替换,表示注释掉swap的那一行。 free -h

修改内核参数(master 和所有node )

# Enable kernel modules
sudo tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter# Add some settings to sysctl
sudo tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF# 重新加载 sysctl
sudo sysctl --system

安装 containerd

# 安装关联软件
sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates# 安装docker仓库
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 安装containerd
sudo apt update
sudo apt install -y containerd.io# 配置 containerd 用systemdcgroup启动.
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml# 重启
sudo systemctl restart containerd
sudo systemctl enable containerd

可以看到containerd已经成功启动~

# 设置crictl
cat > /etc/crictl.yaml << EOF
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 10
debug: false
EOF

安装k8s

安装组件(master 和所有node )

# 添加apt repository for Kubernetes
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-add-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"apt-get update
# 查看版本
apt-cache madison kubeadm|headapt install -y kubelet=1.24.4-00 kubeadm=1.24.4-00 kubectl=1.24.4-00

下载镜像(master 和所有node )

# 使用国内阿里云镜像站点,查看所需镜像
kubeadm config images list \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.24.4# 指定版本下载
kubeadm config images pull \
--kubernetes-version=v1.24.4 \
--image-repository registry.aliyuncs.com/google_containers# 查看镜像
crictl images

集群配置(master)

kubeadm config print init-defaults > kubeadm.yaml

修改集群配置如下:
左边为导出的原始文件,右边为修改后的文件

#
kubeadm init \
--config /root/kubeadm.yaml \
--ignore-preflight-errors=SystemVerification \
--upload-certs

 journalctl -xefu  kubelet

集群配置2

kubeadm reset

集群配置3

集群配置4

journalctl -xefu kubelet 的报错信息如下:

11月 28 23:24:10 k8s-master kubelet[24909]: E1128 23:24:10.831329   24909 remote_runtime.go:201] "RunPodSandbox from runtime service failed" err="rpc error: code = Unknown desc = failed to get sandbox image \"registry.k8s.io/pause:3.6\": failed to pull image \"registry.k8s.io/pause:3.6\": failed to pull and unpack image \"registry.k8s.io/pause:3.6\": failed to resolve reference \"registry.k8s.io/pause:3.6\": failed to do request: Head \"https://asia-east1-docker.pkg.dev/v2/k8s-artifacts-prod/images/pause/manifests/3.6\": dial tcp 108.177.125.82:443: connect: connection refused"

cat /etc/containerd/config.toml  |grep image# 替换
sed -i "s#registry.k8s.io/pause:3.6#registry.aliyuncs.com/google_containers/pause:3.6#g"  /etc/containerd/config.toml# 重启containerd
systemctl daemon-reload && systemctl restart containerd
# 重新执行
kubeadm resetkubeadm init \
--config /root/kubeadm.yaml \
--ignore-preflight-errors=SystemVerification \
--upload-certs

集群配置5

journalctl -xefu kubelet 的报错信息如下:

11月 29 00:11:19 k8s-master kubelet[42857]: E1129 00:11:19.795996   42857 remote_runtime.go:201] "RunPodSandbox from runtime service failed" err="rpc error: code = Unknown desc = failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: expected cgroupsPath to be of format \"slice:prefix:name\" for systemd cgroups, got \"/kubepods/burstable/pod444f719af02c349e8eca993c949ab6b9/eddc1ba340a885d45775c0bf4e1f634abf90ac1474ffea30ea6489ba5edd96ba\" instead: unknown"

改回systemd

# 重新执行
kubeadm resetkubeadm init \
--config /root/kubeadm.yaml \
--ignore-preflight-errors=SystemVerification \
--upload-certs

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

# 最终配置
[root@k8s-master ~]# cat kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.1.100bindPort: 6443
nodeRegistration:criSocket: unix:///var/run/containerd/containerd.sockimagePullPolicy: IfNotPresentname: k8s-mastertaints: null
---
apiServer:timeoutForControlPlane: 4m0scertSANs:- 192.168.1.100
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:local:dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: 1.24.4
networking:dnsDomain: cluster.localpodSubnet: 10.244.0.0/16serviceSubnet: 10.96.0.0/12
scheduler: {}
---
# 指定cgroup
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd

node节点

两个节点都执行如下方法:

cat /etc/containerd/config.toml  |grep imagesed -i "s#registry.k8s.io/pause:3.6#registry.aliyuncs.com/google_containers/pause:3.6#g"  /etc/containerd/config.tomlsystemctl daemon-reload && systemctl restart containerd
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \--discovery-token-ca-cert-hash sha256:3ce5d8f9fd07a09dd1625531de6876f3b41110c4e005a1c2b5470fbf074ab5cf

集群安装成功~

网络插件

# 使用calico
curl https://raw.githubusercontent.com/projectcalico/calico/v3.24.1/manifests/calico.yaml -o calico-3-24-1.yaml
kubectl apply -f calico-3-24-1.yaml

部署完成之后多等一会,就会变成running了~

node也全部都是ready了~

测试

kubectl create deployment nginx --image=nginx
kubectl get pod
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc

工具类学习

grep 'registry.k8s.io/pause:3.6' /var/log/syslog

参考

# [最新]ubuntu22.04安装kubernetes1.25 k8s1.25 前半部分配置
Ubuntu22.04 安装 K8S 后半部分配置 kubeadm的config配置 ipvs配置

【k8s系列】vmware中ubuntu22.04使用kubeadm安装k8s集群(1.24.4 or higher)(cka考试环境搭建)相关推荐

  1. ubuntu18.04下hadoop安装与集群配置

    ubuntu18.04下hadoop安装与集群配置 hadoop安装_单机/伪分布式配置 环境 创建hadoop用户 更新apt 安装SSH.配置SSH无密码登陆 安装Java环境 安装 Hadoop ...

  2. k8s 的etcd备份、CoreDNS和dashboard安装,集群升级,yaml详解

    前言:本文k8s环境搭建是采用kubeasz 3.2.0方式二进制部署的,这个种部署方式是经过CNCF(云原生基金会)认证的,可以用在生产上,本演示环境已装好k8s和calico 安装包链接:http ...

  3. k8s之二进制安装etcd集群

    前言 kubeadm安装的集群,默认etcd是一个单机的容器化的etcd,并且k8s和etcd通信没有经过ssl加密和认证,这点是需要改造的. 所以首先我们需要先部署一个三节点的etcd集群,二进制部 ...

  4. 用Kubeadm安装K8s后,kube-flannel-ds一直CrashLoopBackOff

    2019独角兽企业重金招聘Python工程师标准>>> 如果使用Kubeadm安装K8s集群,在安装flannel网络插件后,发现pod: kube-flannel-ds 一直是Cr ...

  5. 虚拟化系列-VMware vSphere 5.1 简介与安装

    一. VMware vSphere 5.1简介 vSphere是VMware推出的基于云计算的新一代数据中心虚拟化套件,提供了虚拟化基础架构.高可用性.集中管理.监控等一整套解决方案.VMware 于 ...

  6. (亲测无坑)Centos7.x使用kubeadm安装K8s集群1.15.0版本

    基础环境配置 三台Centos7.x的服务器,主节点 cpu >=2,node节点>=1 注:(上述cpu为最低配置,否则集群安装部署会报错,无法启动,对其他硬件无硬性要求) 以下操作若无 ...

  7. 使用kubeadm安装k8s

    1.系统yum源配置 centos下载地址:推荐大家使用centos7.6以上版本. http://mirrors.aliyun.com/centos/7/isos/x86_64/ 查看centos系 ...

  8. kubeadm 安装 k8s 集群

    文章目录 环境 三台 CentOS Version Ready 关闭所有防火墙 禁用 Selinux 关闭 swap 加入 host 信息 相关组件安装 Docker 安装 `kubelet`.`ku ...

  9. 虚拟化服务器里的cpu是什么型号的,VMware虚拟化CPU型号不一样,在集群中如何进行VMotion?...

    VMware虚拟化CPU型号不一样,在集群中如何进行VMotion? 答案:开通EVC功能. EVC 是什么? EVC 是 Enhanced vMotion Compatibility 的简称.EVC ...

最新文章

  1. Xamarin.Android真机测试提示[INSTALL_FAILED_UPDATE_INCOMPATIBLE]
  2. 写自己的一个pdo数据库操作框架
  3. 数据结构:二叉树(BinaryTree)原理及其java实现
  4. linux下zabbix安装
  5. 手把手带你入门 Docker Compose
  6. Python数据结构实战——数(Tree)
  7. 如何零基础入门产品经理
  8. iOS开发-dSYM文件
  9. 鸡兔同笼c语言编程穷举,C语言程序设计100例之(1):鸡兔同笼
  10. 在Lenovo T61笔记本上安装Windows XP
  11. 广西来宾中考计算机考试考什么,来宾中考信息管理系统 http://www.lbzklq.com
  12. Golang 企业级web后端框架
  13. 体验说 | 快速谷歌浏览器翻译插件的菜单栏工具
  14. 树莓4派开机动画_最贵的树莓派单板计算机!8GB内存单板树莓派4上市,售价532元...
  15. Vue2.0的页面模板
  16. 转 Java编程规范
  17. ACM上一些常见问题解答
  18. 醉后不知天在水 满船清梦压星河。—第二十一天
  19. Vivo手机实现录音转文字的方法,图文步骤详解,特别简单
  20. 拼多多关键词搜索商品接口,拼多多关键词搜索列表接口,宝贝详情页接口,关键词取商品列表接口

热门文章

  1. hook 系统方法_了解WordPress Hook系统中的命名空间
  2. 计算机平面设计评分标准,平面设计师有几个级别啊?
  3. postionfixed固定_关于position:fixed的注意点
  4. matlab中数据格式转换
  5. linux shell 学习笔记
  6. Windows CE USB摄像头驱动编写
  7. 如何压缩png图片的大小?
  8. python xml文件解析 及生成xml文件
  9. 成都理工大学计算机报告,成都理工大学信工程计算机网络综合课程设计报告.doc...
  10. css动画----loading加载动画