一、环境信息与准备

1、环境信息

hostname IP 配置 功能
k8s-node1 192.168.43.11 2C4G master、registry
k8s-node2 192.168.43.12 2C4G node
k8s-node3 192.168.43.13 2C4G node

二、环境准备,所有节点

2.1 基础配置

echo "关闭防火墙"
systemctl stop firewalld
systemctl disable firewalld
echo "关闭selinux"
sed -i '7s/enforcing/disabled' /etc/selinux/config
echo "关闭swap"
swapoff -a
sed -i '/ swap /s/^/#/' /etc/fstab

2.2 配置master节点免密登入node节点 为了便于分发文件到node节点,设置免密

ssh-keygen
ssh-copy-id k8s-node2
ssh-copy-id k8s-node3

2.3 配置/etc/hosts文件 2.4 配置YUM源 配置docker-ce YUM源,并安装docker与私有镜像仓库(k8s-node1安装,其他节点不用)

yum remove docker* -y
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
yum -y install docker docker-distribution
systemctl enable --now docker-distribution
cat <<EOF | sudo tee /etc/docker/daemon.json
{"registry-mirrors":["https://hub-mirror.c.163.com"],"exec-opts": ["native.cgroupdriver=systemd"],"insecure-registries":["192.168.1.100:5000"]
}
EOF
systemctl daemon-reload
systemctl enable docker --now

2.5 配置k8s 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

2.6 内核配置

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
EOF
modprobe br_netfilter
sysctl --system

三、安装k8s

3.1 安装软件包

yum install -y kubelet kubeadm kubectl

如果不指定版本默认安装最新版,我们这里安装最新版

kubectlkebuadm命令tab健补齐,默认不补齐

kubectl completion bash >/etc/bash_completion.d/kubectl
kubeadm completion bash >/etc/bash_completion.d/kubeadm
#退出当前终端生效

3.2 下载所需的镜像 查看所需要的镜像

kubeadm config images list
[root@k8s-node1 ~]# kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.23.1
k8s.gcr.io/kube-controller-manager:v1.23.1
k8s.gcr.io/kube-scheduler:v1.23.1
k8s.gcr.io/kube-proxy:v1.23.1
k8s.gcr.io/pause:3.6
k8s.gcr.io/etcd:3.5.1-0
k8s.gcr.io/coredns/coredns:v1.8.6

下载镜像,并修改镜像

for IMAGE in `kubeadm config images list |awk -F / '{print $2}'`;
do
docker pull registry.aliyuncs.com/google_containers/$IMAGE
docker tag registry.aliyuncs.com/google_containers/$IMAGE k8s.gcr.io/$IMAGE
done

记得其中有一个镜像不能通过上述命令修改名称,需要手动修改输入docker iamges验证 3.3 master 集群初始化

 kubeadm init \
--apiserver-advertise-address=192.168.43.11 \
--kubernetes-version v1.23.1 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16

命令解释-----------------------------------------------

$ kubeadm init \ #初始化
–apiserver-advertise-address=xx.xx.xx.xx \ # 指定apiserver的地址也就是master的地址
–image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \ # 指定用阿里云镜像,如果初始化指定阿里云镜像会由于镜像名导致初始化失败,镜像已经下载到了本地,可以不加此参数
–kubernetes-version v1.17.3 \ #指定Kubernetes的版本
–pod-network-cidr=10.244.0.0/16 #指定pod网络

也可以通过文件进行初始化

#生成默认的初始化配置文件
kubeadm config print init-defaults >init-defaults.conf

init-defaults.conf文件详情

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 1.2.3.4bindPort: 6443
nodeRegistration:criSocket: /var/run/dockershim.sockimagePullPolicy: IfNotPresentname: nodetaints: null
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:local:dataDir: /var/lib/etcd
#指定镜像仓库地址
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
#指定k8s版本
kubernetesVersion: 1.23.0
#指定pod范围
networking:dnsDomain: cluster.localserviceSubnet: 10.96.0.0/12
scheduler: {}

使用配置文件下载镜像

kubeadm config images pull --config=init-defaults.conf
#初始化集群
kubeadm init --config=init-defaults.conf

初始化成功后,复制配置文件到普通用户下,成功后中的输出信息中有此信息,直接复制即可

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 ( i d − u ) : (id -u): (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 10.0.8.8:6443 --token qhce4u.9fs411ep2u75bnaz
–discovery-token-ca-cert-hash sha256:3e77b04864b58b83c1e40ed7e33af3f092466ce3504059ebc8fb5930f562251f

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

保存最后的认证信息,node节点加入集群需要使用

kubeadm join 10.0.8.8:6443 --token qhce4u.9fs411ep2u75bnaz \--discovery-token-ca-cert-hash sha256:3e77b04864b58b83c1e40ed7e33af3f092466ce3504059ebc8fb5930f562251f

验证master节点

[root@k8s-node1 ~]# kubectl get node -n kube-system
NAME        STATUS   ROLES                  AGE     VERSION
k8s-node1   Ready    control-plane,master   4m53s   v1.23.1
[root@k8s-node1 ~]# kubectl get pods -n kube-system
NAME                                READY   STATUS    RESTARTS   AGE
coredns-64897985d-l67vh             1/1     Running   0          5m8s
coredns-64897985d-rfnpz             1/1     Running   0          5m8s
etcd-k8s-node1                      1/1     Running   2          5m21s
kube-apiserver-k8s-node1            1/1     Running   2          5m21s
kube-controller-manager-k8s-node1   1/1     Running   2          5m21s
kube-proxy-h4qjm                    1/1     Running   0          5m7s
kube-scheduler-k8s-node1            1/1     Running   2          5m21s

如果初始化失败可以执行kubuctl reset -f恢复主机状态,重新初始化 安装网络插件

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#修改kube-flannel.yml文件
128       "Network": "172.30.0.0/16", #IP地址与初始化中的--pod-network-cidr相同
#安装插件
kubectl apply -f kube-flannel.yml
#查看pod
[root@k8s-node1 flannel]# kubectl get pods -n kube-system -o wide
NAME                                READY   STATUS    RESTARTS   AGE   IP           NODE        NOMINATED NODE   READINESS GATES
coredns-64897985d-l67vh             1/1     Running   0          14m   172.30.0.2   k8s-node1   <none>           <none>
coredns-64897985d-rfnpz             1/1     Running   0          14m   172.30.0.3   k8s-node1   <none>           <none>
etcd-k8s-node1                      1/1     Running   2          14m   10.0.8.8     k8s-node1   <none>           <none>
kube-apiserver-k8s-node1            1/1     Running   2          14m   10.0.8.8     k8s-node1   <none>           <none>
kube-controller-manager-k8s-node1   1/1     Running   2          14m   10.0.8.8     k8s-node1   <none>           <none>
kube-flannel-ds-rxhqb               1/1     Running   0          20s   10.0.8.8     k8s-node1   <none>           <none>
kube-proxy-h4qjm                    1/1     Running   0          14m   10.0.8.8     k8s-node1   <none>           <none>
kube-scheduler-k8s-node1            1/1     Running   2          14m   10.0.8.8     k8s-node1   <none>           <none>

到这里mater节点就配置好了

node节点加入k8s集群

环境配置与master节点相同,安装docker、安装软件包 通过刚才master节点初始化的token信息加入集群,默认24小时有效

kubeadm join 192.168.43.11:6443 --token qhce4u.9fs411ep2u75bnaz \--discovery-token-ca-cert-hash sha256:3e77b04864b58b83c1e40ed7e33af3f092466ce3504059ebc8fb5930f562251f

如果token过期,可以创建永久token

kubeadm token create --print-join-command # 重新创建一个
kubeadm token create --ttl0 --print-join-command # 创建一个永久的

故障排除 1、如果node加入集群后,coredns和kube-flannel pod没起来,一般是原因 原因:node节点没下载这两个镜像,按照之前的方式重新下载和更换镜像名即可 或者把master节点的镜像推送到私有镜像,从私有镜像仓库下载并更名,前期master节点已安装私有镜像仓库

#master节点操作
for IMAGE in kubeadm config images list |awk -F / '{print $2}'
do
docker tag  k8s.gcr.io/$IMAGE 192.168.43.11:5000/$IMAGE
docker push 192.168.43.11:5000/$IMAGE
done
#node节点操作
for IMAGE in kubeadm config images list |awk -F / '{print $2}'
do
docker pull 192.168.43.11:5000/$IMAGE
docker tag 192.168.43.11:5000/$IMAGE registry.aliyuncs.com/google_containers/$IMAGE
done

过一会儿再查看pod,就up了,容器有自动重启机器

kubectl get pods -n kube-system -o wide

到这里k8s集群就搭建好了

部署k8s集群--1.23.1版本相关推荐

  1. kubeadm方式部署k8s集群(1.18版本,亲测可用)

    文章目录 一.系统环境 1.设置系统主机名以及Host文件 2.关闭防火墙 3.关闭系统Swap 二.安装Docker 1.安装docker 2.所需镜像 三.安装kubelet.kubeadm 和 ...

  2. (shell批量版)二进制高可用安装k8s集群v1.23.5版本,搭配containerd容器运行时

    目录 第1章 安装前准备 1.1 节点规划 1.2 配置NTP 1.3 bind安装DNS服务 1.4 修改主机DNS 1.5 安装runtime环境及依赖 1.5.1 安装docker运行时 1.5 ...

  3. linux上部署K8S集群

    部署K8S集群 服务器硬件要求:三台虚拟机服务器,操作系统都为centos: ​ 硬盘最低配置:内存2GB,CPU2核,硬盘30GB. 准备环境 master 192.168.200.110 node ...

  4. kubekey部署k8s集群

    基本介绍:KubeKey 是 KubeSphere 社区开源的一款高效集群部署工具,运行时默认使用 Docker , 也可对接 Containerd CRI-O iSula 等 CRI 运行时,且 E ...

  5. k8s入门:裸机部署 k8s 集群

    系列文章 第一章:✨ k8s入门:裸机部署 k8s 集群 第二章:✨ k8s入门:部署应用到 k8s 集群 第三章:✨ k8s入门:service 简单使用 第四章:✨ k8s入门:StatefulS ...

  6. 【02】Kubernets:使用 kubeadm 部署 K8S 集群

    写在前面的话 通过上一节,知道了 K8S 有 Master / Node 组成,但是具体怎么个组成法,就是这一节具体谈的内容.概念性的东西我们会尽量以实验的形式将其复现. 部署 K8S 集群 互联网常 ...

  7. kubeadm部署K8S集群并使用containerd做容器运行时

    kubeadm部署K8S集群并使用containerd做容器运行时(内容全部实战验证有任何问题欢迎留言咨询讨论) 前言 去年12月份,当Kubernetes社区宣布1.20版本之后会逐步弃用docke ...

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

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

  9. 如何通过rancher部署k8s集群

    目录 1 安装前准备 2 安装rancher 3 配置Rancher 4 创建k8s集群 最近的工作中需要使用到K8S,而面临的第一个问题就是如何部署一个K8S集群环境.现有多种部署方式,如:kube ...

最新文章

  1. 2018新年快乐 !(附幸运读者名单)
  2. Java 高级 --- 多线程快速入门
  3. 基本HTTP协议流程是什么?
  4. Base64 四种方式的编码和解码
  5. CentOS7 最小化安装工具包精简版本
  6. C++工作笔记- C++中的动态类型与动态绑定、虚函数、运行时多态的实现
  7. 计算机应用基础形成性考核作业,计算机应用基础形成性考核作业1
  8. 平安夜、圣诞节设计素材和灵感|撒糖(PNG免扣素材)
  9. STM8L低功耗模式
  10. Android 登陆界面
  11. python实现3d人物建模_很强!用Python实现3D建模!
  12. mysql rps和tps区别_并发虚拟用户、RPS、TPS的解读
  13. 浏览器控制台操作——随身笔记
  14. 方舟服务器建家位置,方舟生存进化新手建家图文攻略 方舟生存进化在哪建家比较好-游侠网...
  15. 【已解决】华为P10禁止系统更新EMUI9
  16. 《Android 开源库》 FlycoTabLayout 从头到脚
  17. python黑魔法指南_Python黑魔法大全
  18. SLC MLC TLC QLC擦写次数
  19. 一步步带你用Java实现双向链表(超详细)
  20. 虚拟机安装到局域网服务器,局域网访问电脑中VMware虚拟机

热门文章

  1. onvif server端集成到BOA服务器后不定时出现closewait问题
  2. 个人形象设计之场合着装
  3. 【python第四章——序列(列表、元组、字典、集合、字符串、正则)】
  4. 计算机组成原理三位计数器实验,计算机组成原理位二进制计数器实验报告.doc...
  5. cookies的时限是多少_cookie有效期限30天什么意思
  6. 杀死当前Excel进程
  7. 2022填报志愿哪个软件好?志愿填报软件排行
  8. jmeter 测试结果.jtl文件解析
  9. HS 公司高压均质机产品评测
  10. php hs256加密,JWT签名算法中HS256和RS256有什么区别