我这里准备三台本地vmware虚拟机,版本号centos7.9,一台master节点,一台node1,一台node2

kubeadm方式部署。Kubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署 Kubernetes集群。

一、初始化虚拟机环境(三台虚拟机都执行)

[root@k8s ~]# yum update #更新所有本地包,操作更新完成后建议快照一下。

二、操作所有节点

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
 
# 关闭 selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
 
# 关闭 swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
 
# 根据规划设置主机名
vi /etc/hosts
192.168.10.1 k8s-master
192.168.10.2 k8s-node1
192.168.10.3 k8s-node2

# 将桥接的 IPv4 流量传递到 iptables 的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
 
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com

三、安装docker(三台虚拟机都执行)

1.wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
2.yum -y install docker-ce
3.systemctl enable docker && systemctl start docker
 
4.配置镜像下载加速器:
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
阿良教育:http://www.aliangedu.cn
}
EOF
5.systemctl restart docker #重启docker
6.docker info #查看docker详情
 

四、安装cri-dockerd(三台虚拟机都执行)

1. wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.5/cri-dockerd-0.2.5-3.el7.x86_64.rpm
2. rpm -ivh cri-dockerd-0.2.5-3.el7.x86_64.rpm
3. 指定依赖镜像地址:
    vi /usr/lib/systemd/system/cri-docker.service ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
4. systemctl daemon-reload
5. systemctl enable cri-docker && systemctl start cri-docker
 

五、添加阿里云 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

六、安装 kubeadm,kubelet 和 kubectl(三台虚拟机都执行)

由于版本更新频繁,这里指定版本号部署:
1. yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0
2. systemctl enable kubelet
 

七、 部署 Kubernetes Master (master节点执行)

1. 在 192.168.10.1(Master)执行。
   kubeadm init \
   --apiserver-advertise-address=192.168.10.1 \
   --image-repository registry.aliyuncs.com/google_containers \
   --kubernetes-version v1.25.0 \
   --service-cidr=10.96.0.0/12 \
   --pod-network-cidr=10.244.0.0/16 \
   --cri-socket=unix:///var/run/cri-dockerd.sock \
   --ignore-preflight-errors=all
 
注释:
  • --apiserver-advertise-address 集群通告地址
  • --image-repository 由于默认拉取镜像地址 k8s.gcr.io 国内无法访问,这里指定阿里云镜像仓库地址
  • --kubernetes-version K8s 版本,与上面安装的一致阿良教育:http://www.aliangedu.cn
  • --service-cidr 集群内部虚拟网络,Pod 统一访问入口
  • --pod-network-cidr Pod 网络,与下面部署的 CNI 网络组件 yaml 中保持一致
  • --cri-socket 指定 cri-dockerd 接口,如果是 containerd 则使用--cri-socket unix:///run/containerd/containerd.sock
2. 初始化完成后,最后会输出一个 join 命令,先记住,下面用。
    拷贝 kubectl 使用的连接 k8s 认证文件到默认路径:
    1)mkdir -p $HOME/.kube
    2)sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    3)sudo chown $(id -u):$(id -g) $HOME/.kube/config
    查看工作节点:
    4)kubectl get nodes
         NAME STATUS ROLES AGE VERSION
         k8s-master NotReady control-plane,master 20s v1.25.0
注:由于网络插件还没有部署,还没有准备就绪 NotReady,先继续参考资料:
  https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file
  https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node

八、加入 Kubernetes Node (node1,node2执行)

在 192.168.10.2/3(Node)执行。
向集群添加新节点,执行在 kubeadm init 输出的 kubeadm join 命令并手动加上 --cri-socket=unix:///var/run/cri-dockerd.sock:
1. kubeadm join 192.168.10.1:6443 --token 7gqt13.kncw9hg5085iwclx \ --discovery-token-ca-cert-hash sha256:66fbfcf18649a5841474c2dc4b9ff90c02fc05de0798ed690e1754437be35a01 --cri-socket=unix:///var/run/cri-dockerd.sock
  默认 token 有效期为 24 小时,当过期之后,该 token 就不可用了。这时就需要重新创建 token,
  可以直接使用命令快捷生成:阿良教育:http://www.aliangedu.cn。kubeadm token create --print-join-command 参考资料:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-join/

九、 部署容器网络(CNI)(master节点执行)

Calico 是一个纯三层的数据中心网络方案,是目前 Kubernetes 主流的网络方案。下载 YAML:
1. wget https://docs.projectcalico.org/manifests/calico.yaml
  下载完后还需要修改里面定义 Pod 网络(CALICO_IPV4POOL_CIDR),与前面 kubeadm init 的 --pod-network-cidr 指定的一样。
  修改完后文件后,部署:
2. kubectl apply -f calico.yaml
3. kubectl get pods -n kube-system
  等 Calico Pod 都 Running,节点也会准备就绪。
  注:以后所有 yaml 文件都只在 Master 节点执行。
  安装目录:/etc/kubernetes/
  组件配置文件目录:/etc/kubernetes/manifests/
  参考资料:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network

十、 部署 Dashboard(master节点执行)

Dashboard 是官方提供的一个 UI,可用于基本管理 K8s 资源。YAML 下载地址:
1. https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
课件中文件名是:kubernetes-dashboard.yaml
默认 Dashboard 只能集群内部访问,修改 Service 为 NodePort 类型,暴露到外部:阿良教育:http://www.aliangedu.cn
1. vi recommended.yaml
  ...
  kind: Service
  apiVersion: v1
  metadata:
  labels:
  k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
  spec:
  ports:
  - port: 443
  targetPort: 8443
  nodePort: 30001
  selector:
  k8s-app: kubernetes-dashboard
  type: NodePort
  ...
2. kubectl apply -f recommended.yaml
3. kubectl get pods -n kubernetes-dashboard

十一、部署完成访问地址

访问地址:https://IP:30001
 

本地部署一套k8s集群的更多相关文章

  1. 使用kubeadm快速部署一套K8S集群

    一.Kubernetes概述 1.1 Kubernetes是什么 Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S. K8S用于容器化应用程序的 ...

  2. 在node节点部署kubectl管理k8s集群

    感谢!原文链接:https://blog.csdn.net/sinat_35930259/article/details/79994078 kubectl是k8s的客户端程序,也是k8s的命令行工具, ...

  3. 快速搭建一套k8s集群环境

    参考官网 kubeadm是官方提供的快速搭建k8s集群的开源工具,对于非运维人员学习k8s,kubeadm方式安装相对更简单. kubeadm创建一个集群:https://kubernetes.io/ ...

  4. Kubeadm部署高可用K8S集群

    一 基础环境 1.1 资源 节点名称 ip地址 VIP 192.168.12.150 master01 192.168.12.48 master02 192.168.12.242 master03 1 ...

  5. Rancher 2.2.2 - HA 部署高可用k8s集群

    对于生产环境,需以高可用的配置安装 Rancher,确保用户始终可以访问 Rancher Server.当安装在Kubernetes集群中时,Rancher将与集群的 etcd 集成,并利用Kuber ...

  6. kubeadm部署高可用K8S集群(v1.14.2)

    1. 简介 测试环境Kubernetes 1.14.2版本高可用搭建文档,搭建方式为kubeadm 2. 服务器版本和架构信息 系统版本:CentOS Linux release 7.6.1810 ( ...

  7. kubespray -- 快速部署高可用k8s集群 + 扩容节点 scale.yaml

    主机 系统版本      配置       ip Mater.Node,ansible CentOS 7.2                                             4 ...

  8. 使用Rancher Server部署本地多节点K8S集群

    当我第一次开始我的Kubernetes之旅时,我一直在寻找一种设置本地部署环境的方式.很多人常常会使用minikube或microk8s,这两者非常适合新手在单节点集群环境下进行操作.但当我已经了解了 ...

  9. Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务

         前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for deskto ...

  10. 企业运维实践-还不会部署高可用的kubernetes集群?使用kubeadm方式安装高可用k8s集群v1.23.7

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录: 0x00 前言简述 ...

随机推荐

  1. GDOI2021游记

    \(\text{Day0}\) 4月9日抵达深圳耀华实验学校 宿舍在迷你公寓,竟然是女生公寓?!! 我想起了 \(b\) 站看到的一个 \(NOI\) 全国总决赛的纪录片(惊人的相似) 不过确实还行 ...

  2. git添加多账户(附带tortoiseGit多账号使用)

    近期想在公司电脑上开发自己项目,但是电脑上已经配置过一个gitlab账户了,现在想要把自己的git账户也加进来,方便代码控制. 因为git用的比较少,还不太熟悉,都是网上找资料,边看边学边做,如有不对 ...

  3. refactorObjProps:裁剪、添加对象字段或更新字段内容

    介绍 根据模板,自动对一个 JS 对象的字段进行裁剪.添加或更新字段类型. 比如,做一个设置功能,其设置的数据(对象)存储在 localStorage 中.如果对象的字段名称更新了.或增加了一个新的字 ...

  4. mac系统上hdfs java api的简单使用

    目录 1.背景 2.环境准备 3.环境搭建 3.1 引入jar包 3.2 引入log4j.properties配置文件 3.3 初始化Hadoop Api 4.java api操作 4.1 创建目录 ...

  5. C#判断useragent是pc还是手机端

    public static bool CheckAgent(string userAgent) { bool flag = false; string[] keywords = { "And ...

  6. 报错com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect datetime value: '1' for column 'date' at row 1问题解决

    出现 com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect datetime value: '1' ...

  7. go语言初记

    快速了解 http://go-tour-zh.appspot.com/welcome/1 (可以需要爬墙) 下面记录下了解go的过程,特别记录下与你脑子里原有"观念"不同的地方: ...

  8. springboot自带的MD5加密

    //md5DigestAsHex返回的是string类型 DigestUtils.md5DigestAsHex(user.getPassword().getBytes(StandardCharsets ...

  9. API 文档

    API 文档 Java类的组织形式 使用API查找方法: 包 -> 类 -> 方法 直接检索:Math

  10. 解决多行文本超出显示省略号webpack打包后失效的问题

    开发环境没问题: 但是在打包部署后就失效了: 经过对比后发现是因为: 缺少了 -webkit-box-orient: vertical;  导致 解决方案 : /* ! autoprefixer: o ...