Kubeadm部署k8s单点master

1、环境准备:

主机名 IP 说明 宿主机系统
master 10.0.0.17 Kubernetes集群的master节点 CentOS 7.9
node1 10.0.0.27 Kubernetes集群的node节点 CentOS 7.9
 # 所有master和node节点执行:
 ​
 # 关闭防火墙、iptables和selinux
 systemctl stop firewalld && systemctl disable firewalld
 setenforce 0
 sed -i 's/enforcing/disabled/' /etc/selinux/config
 ​
 # 禁用swap
 vim /etc/fstab
 swapoff -a
 ​
 # 主机名互相解析
 hostnamectl set-hostname master
 vim /etc/hosts
 10.0.0.27 node
 10.0.0.17 master
 ​
 # 时间同步
 yum install -y chrony
 systemctl enable --now chronyd
 ​
 # 添加网桥过滤和地址转发功能
 yum install -y bridge-utils
 modprobe br_netfilter
 cat > /etc/sysctl.d/kubernetes.conf <<EOF
 net.bridge.bridge-nf-call-arptables = 1
 net.bridge.bridge-nf-call-ip6tables = 1
 net.ipv4.ip_forward = 1
 user.max_user_namespaces=28633
 EOF
 sysctl -p /etc/sysctl.d/kubernetes.conf
 ​

2、安装docker

 # 所有节点执行:
 yum install -y yum-utils device-mapper-persistent-data lvm2
 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 yum install docker-ce
 ​
 # 配置镜像加速器、使用 systemd 来管理容器的 cgroup
 mkdir -p /etc/docker
 cat <<EOF > /etc/docker/daemon.json
 {
     "exec-opts": ["native.cgroupdriver=systemd"],
     "log-driver": "json-file",
     "log-opts": {
         "max-size": "100m"
    },
     "storage-driver": "overlay2",
     "storage-opts": [
         "overlay2.override_kernel_check=true"
    ],
     "experimental": false,
     "debug": false,
     "max-concurrent-downloads": 10,
     "registry-mirrors": ["https://pgavrk5n.mirror.aliyuncs.com"]
 }
 EOF
 systemctl enable docker && systemctl start docker && systemctl status docker

3、切换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 kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0    

4、安装指定版本kubeadm、kubelet、kubectl

 # 所有节点执行:
 # 建议不要安装最新版本,因为最新版本很多组件不兼容,造成安装报错。
 yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
 ​
 # 设置kubelet开机启动
 systemctl enable kubelet

5、初始化K8S

 # master节点:
 kubeadm init   --apiserver-advertise-address=10.0.0.17   --image-repository registry.aliyuncs.com/google_containers   --kubernetes-version v1.23.0   --service-cidr=10.96.0.0/12   --pod-network-cidr=10.244.0.0/16   --ignore-preflight-errors=all
 ​
 # 说明:
 –apiserver-advertise-address #集群通告地址(master机器IP)
 –image-repository   #由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
 –kubernetes-version            #K8s版本,与上面安装的一致
 –service-cidr                       #集群内部虚拟网络,Pod统一访问入口
 –pod-network-cidr                   #Pod网络,与下面部署的CNI网络组件yaml中保持一致

 # master节点执行:
 ​
 # 创建必要文件
   mkdir -p $HOME/.kube
   sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
   sudo chown $(id -u):$(id -g) $HOME/.kube/config
 ​

6、node节点加入集群

 # 所有node节点执行:
 ​
 # 执行初始化生成的join 命令:
 kubeadm join 10.0.0.17:6443 --token fnpbrc.e5s4jqrx8na4cpo9 \
  --discovery-token-ca-cert-hash sha256:5ecaba93c59504941137c963584e81643c6b50ecda6c2c1f4a4f60ca8cd9a7a0
 ​
 # 提示"kubectl get nodes",表示加入集群成功,可在master节点使用此命令查看node信息
 ​
 # 如果忘记或者token过期(默认有效期24小时)需要执行以下命令:
 kubeadm token create --print-join-command

7、部署网络

 # master节点执行:
 ​
 # 下载calico YAML文件
 wget https://docs.projectcalico.org/manifests/calico.yaml
 ​
 #修改Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init的–pod-network-cidr指定的一样(大概4551行左右)
 vim calico.yaml
 ......
 # no effect. This should fall within `--cluster-cidr`.
  - name: CALICO_IPV4POOL_CIDR            #取消注释
    value: "10.244.0.0/16"                #取消注释,修改为初始化–pod-network-cidr指定的地址
 # Disable file logging so `kubectl logs` works.
 ......
 ​
 ​
 kubectl apply -f calico.yaml
 ​
 # 稍等片刻,查看节点状态:
 [root@master ~]# kubectl get nodes
 NAME     STATUS   ROLES                 AGE   VERSION
 master   Ready   control-plane,master   49m   v1.23.0
 node     Ready   <none>                 14m   v1.23.0
 ​
 # 查看通信状态
 kubectl get pods -n kube-system

8、部署nginx测试

 #创建一个yaml文件
 ​
 [root@master ~]# vim nginx.yml
 apiVersion: apps/v1
 kind: Deployment
 metadata:
  name: nginx-deployment
  labels:
    app: nginx
    rel: stable
 spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
      rel: stable
  template:
    metadata:
      labels:
        app: nginx
        rel: stable
    spec:
      containers:
       - name: nginx
        image: nginx
         
 [root@master ~]# kubectl apply -f nginx.yml
 #再创建一个yaml文件:
 ​
 [root@master ~]# vim nginx-service.yml
 apiVersion: v1
 kind: Service
 metadata:
  name: nginx-service
 spec:
  selector:
    app: nginx
  type: NodePort
  ports:
     - protocol: TCP
      port: 80
      targetPort: 80
 ​
 [root@master ~]# kubectl apply -f nginx-service.yml
 #查看服务 (Running说明启动成功)
 [root@master ~]# kubectl get pod,svc
 NAME                                   READY   STATUS   RESTARTS   AGE
 pod/nginx-deployment-749d94b5db-64lm7   1/1     Running   0         8m20s
 pod/nginx-deployment-749d94b5db-j522z   1/1     Running   0         8m20s
 pod/nginx-deployment-749d94b5db-jjwjr   1/1     Running   0         8m20s
 ​
 NAME                   TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)       AGE
 service/kubernetes     ClusterIP   10.96.0.1     <none>        443/TCP       63m
 service/nginx-service   NodePort    10.98.54.199   <none>        80:32378/TCP   4m35s
 ​
 # 浏览器打开10.0.0.17:32378就可以看到nginx页面了(端口32378是上边命令查询出来的)

Kubeadm部署k8s单点master的更多相关文章

  1. ubuntu18.04使用kubeadm部署k8s单节点

    实验目的: 体验kubeadm部署k8s服务,全流程体验! 实验环境: ubuntu18.04 联网在线部署 kubeadm 01.系统检查 节点主机名唯一,建议写入/etc/hosts 禁止swap ...

  2. 使用kubeadm部署K8S v1.17.0集群

    kubeadm部署K8S集群 安装前的准备 集群机器 172.22.34.34 K8S00 172.22.34.35 K8S01 172.22.34.36 K8S02 注意: 本文档中的 etcd . ...

  3. 使用kubeadm部署k8s集群[v1.18.0]

    使用kubeadm部署k8s集群 环境 IP地址 主机名 节点 10.0.0.63 k8s-master1 master1 10.0.0.63 k8s-master2 master2 10.0.0.6 ...

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

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

  5. (二)Kubernetes kubeadm部署k8s集群

    kubeadm介绍 kubeadm是Kubernetes项目自带的及集群构建工具,负责执行构建一个最小化的可用集群以及将其启动等的必要基本步骤,kubeadm是Kubernetes集群全生命周期的管理 ...

  6. 使用kubeadm部署k8s

    k8s组件 master,node master中包括apiserver,scheduler,controller.etcd apiserver:负责接收用户请求,并且保存至etcd中. schedu ...

  7. 在Centos7.6使用kubeadm部署k8s 1.14.3

    K8s不是一个软件,而是一堆软件的集合,由于这堆软件各自独立,因此可能k8s安装过程很容易出现问题 K8s部署有多种方式,本文使用kubeadm部署,从易操作性和可控性来说属于中等的方式 环境:cen ...

  8. kubeadm部署k8s集群

    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 这个工具能通过两条指令完成一个kubernetes集群的部署: # 创建一个 Master 节点 kubeadm ini ...

  9. 解决阿里云ECS下kubeadm部署k8s无法指定公网IP

    背景 一般情况下,"kubeadm"部署集群时指定"--apiserver-advertise-address=<public_ip>"参数,即可在 ...

随机推荐

  1. centos/windows服务器,Mysql数据库表结构损坏-已解决

    [问题原因]服务器突然断电 [故障报告]数据库表结构损坏 [解决思路]进入强制恢复模式,备份库表及数据重建 故障发现 周末公司断电,周一启动数据库就直接报错了 查看日志 上面标记的log,明确表示是非 ...

  2. 技术专家说 | 如何基于 Spark 和 Z-Order 实现企业级离线数仓降本提效?

    [点击了解更多大数据知识] 市场的变幻,政策的完善,技术的革新--种种因素让我们面对太多的挑战,这仍需我们不断探索.克服. 今年,网易数帆将持续推出新栏目「金融专家说」「技术专家说」「产品专家说」等, ...

  3. MybatisPlus——全网配置最全的代码生成器

    MybatisPlus代码生成器 这里讲解的是新版 (mybatis-plus 3.5.1+版本),旧版不兼容 官方文档:https://baomidou.com/(建议多看看官方文档,每种功能里面都 ...

  4. spring使用junit单元测试

    <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test& ...

  5. Docke 搭建 apache2 + php8 + MySQL8 环境

    Docker 安装 执行 Docker 安装命令 curl -fsSL https://get.docker.com/ | sh 启动 Docker 服务 sudo service docker st ...

  6. 使用Python批量爬取美女图片

    运行截图 实列代码: from bs4 import BeautifulSoup import requests,re,os headers = { 'User-Agent': 'Mozilla/5. ...

  7. 【MySQL】从入门到精通6-MySQL数据类型与官方文档

    上期:[MySQL]从入门到精通5-一对多-外键 这个是官方文档链接,是世界上最全面的MySQL教学了,所有问题都可以在这里找到解决方法. https://dev.mysql.com/doc/ htt ...

  8. 【lwip】06-网络接口层分析

    目录 前言 6.1 概念引入 6.2 网络接口层数据概念流图 6.3 网卡收包程序流图 6.4 网卡数据结构 6.4.1 struct netif源码 6.4.2 字段分析 6.4.2.1 网卡链表 ...

  9. 通过Quartz 进行定时任务

    小记一下通过Quartz 进行轮询数据库从而进行自动打印的需求. 一:首先通过NuGet引用Quartz,Quartz依赖Common.Logging和Common.Logging.Log4Net12 ...

  10. Windows Server体验之升级安装

    由于Windows Server的版本是每半年更新的,而微软对于产品的支持周期又是有限的.比如Windows Server 1803的主流支持只到2019年11月12日.也就是说,最多1年半,就需要更 ...