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. FormData 和表单元素(form)的区别

    Form 元素 <form>元素表示文档中的一个区域,此区域包含交互控件,用于向 Web 服务器提交信息(文件.字符).下面称之为表单元素或表单. 要向 Web 服务器提交信息,我们必须要 ...

  2. 网络编程与socket套接字

    网络编程与socket套接字 传输层 PORT协议 port是一种接口,数据通过它在计算机和其他设备(比如打印机,鼠标,键盘或监视器)之间,网络之间和其他直接连接的计算机之间传递 TCP协议 ​ 传输 ...

  3. CVE-2021-3156 sudo提权复现

    直接查看https://www.bilibili.com/video/BV1Gp4y1s7dd/,已发至B站

  4. 搭建docker镜像仓库(一):使用registry搭建本地镜像仓库

    目录 一.系统环境 二.前言 三.使用registry搭建私有镜像仓库 3.1 环境介绍 3.2 k8smaster节点配置镜像仓库 3.3 k8sworker1节点配置从私有仓库上传和拉取镜像 3. ...

  5. day33-线程基础03

    线程基础03 6.用户线程和守护线程 用户线程:也叫工作线程,当线程的任务执行完或者通知方法结束.平时用到的普通线程均是用户线程,当在Java程序中创建一个线程,它就被称为用户线程 守护线程(Daem ...

  6. Docker 完整版教程

    Docker 安装 一.安装前必读 在安装 Docker 之前,先说一下配置,我这里是Centos7 Linux 内核:官方建议 3.10 以上,3.8以上貌似也可. 注意:本文的命令使用的是 roo ...

  7. 使用Gitlab CI/CD功能在本地部署 Spring Boot 项目

    前提条件: 1.Docker安装Gitlab,地址:https://www.cnblogs.com/sanduzxcvbnm/p/13814730.html 2.Docker安装Gitlab-runn ...

  8. 8.云原生之Docker容器镜像构建最佳实践浅析

    转载自:https://www.bilibili.com/read/cv15220861/?from=readlist 本章目录 0x02 Docker 镜像构建最佳实践浅析 1.Dockerfile ...

  9. 1.云原生之Docker容器技术基础知识介绍

    转载自:https://www.bilibili.com/read/cv15180540/?from=readlist

  10. Beats:使用 Elastic Stack 记录 Python 应用日志

    文章转载自:https://elasticstack.blog.csdn.net/article/details/112259500 日志记录实际上是每个应用程序都必须具备的功能.无论你选择基于哪种技 ...