首页 > 其他分享 >使用kubeadm快速部署k8s集群

使用kubeadm快速部署k8s集群

时间:2023-05-05 20:23:43浏览次数:39  
标签:kube -- etc token master 集群 kubeadm k8s

目录

使用kubeadm快速部署k8s集群

一、环境准备

操作系统 CentOS7.x-86_x64

硬盘:40G+

角色 IP
master 192.168.130.10
node 192.168.130.20

二、kubeadm工具介绍

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。

这个工具能通过两条指令完成一个kubernetes集群的部署:

# 创建一个 Master 节点
$ kubeadm init

--apiserver-advertise-address string
API Server将要广播的监听地址。如指定为 `0.0.0.0` 将使用缺省的网卡地址。
--pod-network-cidr string
指明pod网络可以使用的IP地址段。 如果设置了这个参数,control plane将会为每一个节点自动分配CIDRs。
--service-cidr string     缺省值: "10.96.0.0/12"
为service的虚拟IP地址另外指定IP地址段
--image-repository
--kubernetes-version string     缺省值: "stable-1"
为control plane选择一个特定的Kubernetes版本。

# 将一个 Node 节点加入到当前集群中
$ kubeadm join <Master节点的IP和端口 >

三、实操

1、所有节点(基础环境)

#可以访问外网
ping baidu.com

#修改主机名
hostnamectl set-hostname master
hostnamectl set-hostname node

#域名解析文件
[root@master ~]# vi /etc/hosts
192.168.130.10	master
192/168.130.20	node
[root@master ~]# scp /etc/hosts 192.168.130.20:/etc/hosts
......

#关防火墙、selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config #永久
或者 vi /etc/sysconfig/selinux
setenforce 0

#关swap分区
swapoff -a
free -m
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久
或者vi /etc/fstab

# 修改内核参数
cat > /etc/sysctl.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sysctl --system  # 生效
sysctl -p
modprobe br_netfilter

#开启ipvs
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- br_netfilter
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|nf_conntrack_ipv4"

#时间同步
yum install ntpdate -y
ntpdate ntp1.aliyun.com

#配置系统的yum源
yum -y install wget
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#安装docker
yum install -y yum-utils device-mapper-persistent-data lvm2
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+' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
yum -y install docker-ce
systemctl enable --now docker
docker --version

#镜像加速器
cat >> /etc/docker/daemon.json << EOF
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m",
        "max-file": "10"
    },
    "registry-mirrors": ["https://mdz3gxt7.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
#添加阿里云yun软件源(k8s)
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

yum install -y kubeadm-1.18.2 kubelet-1.18.2 kubectl-1.18.2
systemctl enable kubelet && systemctl start kubelet

2、master节点

kubeadm init \
  --apiserver-advertise-address=192.168.130.10 \
  --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
  --kubernetes-version 1.18.2 \
  --service-cidr=10.96.0.0/16 \
  --pod-network-cidr=10.244.0.0/16

--kubernetes-version: 用于指定我们要安装的kubernetes的版本

--image-repository: 用于指定我们要拉取镜像的仓库

--service-cidr: svc的ip段

--pod-network-cidr: pod的ip段

#如果没有生成token,则运行:生成了不要执行
kubeadm token create --print-join-command 


#查看令牌列表
kubeadm token list
#查看sha256
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'     
默认token有效期为24小时,当过期之后,该token就不可用了!!!!需要重新创建token
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
#部署CNI网络插件
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

kubectl  apply  -f  kube-flannel.yml
#查看进度
[root@master ~]# kubectl get pods -n kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-546565776c-d2q96         1/1     Running   0          95m
coredns-546565776c-kzt4r         1/1     Running   0          95m
etcd-master                      1/1     Running   0          95m
kube-apiserver-master            1/1     Running   0          95m
kube-controller-manager-master   1/1     Running   0          95m
kube-proxy-jcdr7                 1/1     Running   0          95m
kube-proxy-tb474                 1/1     Running   0          93m
kube-scheduler-master            1/1     Running   0          95m

3、node节点(加入)

[root@node ~]# kubeadm join 192.168.130.10:6443 --token 5y69hh.hp0ccmguds1z4v9k --discovery-token-ca-cert-hash sha256:34d49a5e660ee2cf8a2a924074b460d8a74b8a2983c4b693ab7b1ebd7af09208

#token只有24小时有效期,过期后要再使用该token加入集群,就不行了,就需要重新生成token:
kubeadm token create --print-join-command
#sha256编码不会过期

4、查看集群

[root@master ~]# kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   96m   v1.18.2
node     Ready    <none>   93m   v1.18.2

标签:kube,--,etc,token,master,集群,kubeadm,k8s
From: https://www.cnblogs.com/favoyyqxxxxx/p/17375267.html

相关文章

  • Kafka基础阶段与集群搭建详细教程
    Kafka第一天课堂笔记一.Kafka简介1.1消息队列消息队列——用于存放消息的组件程序员可以将消息放入到队列中,也可以从消息队列中获取消息很多时候消息队列不是一个永久性的存储,是作为临时存储存在的(设定一个期限:设置消息在MQ中保存10天)消息队列中间件:消息队列的组件,例如:Kafk......
  • elasticsearch集群及kibana安装
    系统配置创建一个用户elastic,不能使用root用户启动配置该用户环境变量,用户home目录.bash_profile文件#配置ES_JAVA_HOME使用es自带jdkexportES_JAVA_HOME=/data/es/elasticsearch/jdk#修改最大文件句柄数ulimit-n65535#修改最大线程数ulimit-u4096执行..bash_p......
  • k8s集群部署搭建
    一.搭建环境win11 16G+1t   VMware虚机 4G+2G+2G二.拓扑图 master+2node三.ip划分四.前置条件配置完成,按照文档进行搭建即可,最终实现效果如下图 ......
  • K8S集群管理工具、平台
    1RancherRancher中文官网:https://docs.rancher.cn/2KubeSphere官网:https://kubesphere.com.cn/面向云原生应用的容器混合云KubeSphere愿景是打造一个以Kubernetes为内核的云原生分布式操作系统,它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用(plug-a......
  • k8s集群-CNI网络插件(Calico 和 Flannel)
    1)部署flannel网络(主节点服务器)在主节点服务器上查看子节点状态为NotReady[root@k8s-master01-15~]#kubectlgetnodeNAMESTATUSROLESAGEVERSIONk8s-master01-15NotReadymaster20mv1.20.11k8s-node01-16NotReady19m......
  • 部署Kubeadm遇到的哪些问题,并且如何解决
    1)设置错误导致kubeadm安装k8s失败提示:ERRORFileContent–proc-sys-net-bridge-bridge-nf-call-iptables[root@node01data]#kubeadmjoinmasterIP地址:6443--tokenabcdef.0123456789abcdef>--discovery-token-ca-cert-hashsha256:e7a08a24b68c738cccfcc3ae56b7a433......
  • k8s-外置ETCD集群部署
    如何把ETCD的数据库备份,以及还原的操作方法(待更新中)地址:Etcd是一个分布式键值存储系统,Kubernetes使用Etcd进行数据存储,所以先准备一个Etcd数据库,为解决Etcd单点故障,应采用集群方式部署,这里使用3台组建集群,可容忍1台机器故障。为了节省机器,这里把3个ETCD实例分别部署在一个Matse......
  • kubeadm安装-k8s集群(阿里云服务)【转】-实测安装成功
    部署Kubeadm遇到的哪些问题,并且如何解决地址:http://www.shanhubei.com/archives/2582.htmlk8s集群-CNI网络插件地址:http://www.shanhubei.com/archives/2582.html1、初始化服务器设置(三台都要)环境机器:Linux7.6系统为了方便管理,将服务器的实例名称改成:k8s-master01-15/......
  • k8s kubectl 命令使用及命令补全
      kebuctl命令补全yuminstall-ybash-completionsource/usr/share/bash-completion/bash_completionsource<(kubectlcompletionbash)kubectlcompletionbash>~/.kube/completion.bash.incsource'/root/.kube/completion.bash.inc'source......
  • k8s pod完整生命周期
     [root@master01pod_init]#catpod-all-life-cycles.yamlapiVersion:v1kind:Podmetadata:name:init-pod-1namespace:defaultlabels:app:ini-poddev:prospec:initContainers:-name:init-1image:nginx:1.16.0imagePullPol......