k8s版本:1.15.0

前期准备

  • 节点:

    • master:172.50.13.103(2核2G)
    • node-1:172.50.13.104(2核2G)
    • node-2:172.50.13.105(2核2G)
  • 关闭firewalld防火墙(都要关)

    • systemctl stop firewalld && systemctl disable firewalld
  • 关闭swap分区(都关)

    • 临时关闭:swapoff -a
    • 永久关闭:sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  • 关闭selinux(都关)

    • setenforce 0
    • sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
    • sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
  • 设置hostname:(分别设置)

    • 13.103:hostnamectl set-hostname k8s-master
    • 13.104:hostnamectl set-hostname k8s-node1
    • 13.105:hostnamectl set-hostname k8s-node2
  • 修改hosts文件:(都设置)

172.50.13.103 k8s-master
172.50.13.104 k8s-node1
172.50.13.105 k8s-node2
  • 调整系统内核参数(都要设置)
cat > /etc/sysctl.d/k8s.conf << EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
EOF
  • 执行sysctl -p或者sysctl --system使修改后的系统参数生效。如果提示cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: 没有那个文件或目录,则执行 modprobe br_netfilter

安装docker并修改默认配置(三节点都要配置)

安装

# 安装docker所需的工具
yum install -y gcc gcc-c++ yum-utils device-mapper-persistent-data lvm2
# 配置阿里云的docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新yum缓存
yum makecache
# 指定安装这个版本的docker-ce
yum install -y docker-ce-18.09.9-3.el7
# 启动docker
systemctl enable docker && systemctl start docker

修改docker文件

# 先停止docker服务
systemctl stop docker # 修改/etc/docker/daemon.json,内容应如下。注意修改tmp1234为实际阿里云加速地址
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "100m",
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
],
"registry-mirrors": [
"https://tmp1234.mirror.aliyuncs.com"
],
"ip-forward": true,
"ip-masq": false,
"iptables": false,
"ipv6": false,
"live-restore": true,
"selinux-enabled": false,
"data-root": "/home/data/docker",
} # 重新加载docker配置文件并启动
systemctl daemon-reload
systemctl start docker

添加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

安装k8s组件(三节点都要配置)

yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
systemctl enable kubelet

配置master节点

kubeadm init \
--apiserver-advertise-address=172.50.13.103 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.15.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

主要参数说明:

  • apiserver-advertise-address:指定api server地址
  • image-repository:镜像仓库地址
  • kubernetes-version:k8s版本
  • service-cidr:service的IP地址段
  • pod-network-cidr:pod网络IP段

等待执行完成,根据输出结果进行操作:

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

在另外两个node节点执行:(以实际主节点执行kubeadm init的结果为准)

kubeadm join 172.50.13.103:6443 --token 12345 --discovery-token-ca-cert-hash 123456

在master节点安装网络插件:

wget https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

修改kube-flannel.yml

# 第106行
image: lizhenliang/flannel:v0.11.0-amd64
# 第120行
image: lizhenliang/flannel:v0.11.0-amd64

应用网络插件:

kubectl apply -f kube-flannel.yml

查看集群状态

kubectl get nodes

status全部为ready才能进行后面的操作。

kubectl get pod -n kube-system

只有全部ready都为1/1则可以成功执行后续步骤,如果flannel需检查网络情况,重新进行如下操作:

kubectl delete -f kube-flannel.yml -> 重新wget,修改镜像地址,然后 kubectl apply -f kube-flannel.yml

测试k8s集群

# 创建一个pod。nginx需要提前docker pull
kubectl create deployment nginx --image=nginx
# 暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
# 查看状态
kubectl get pods,svc
# 以下为返回结果,其中30938为nginx端口。在浏览器访问172.50.13.103:30938
NAME READY STATUS RESTARTS AGE
pod/nginx-554b9c67f9-v7ztr 1/1 Running 0 5h21m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 5h43m
service/nginx NodePort 10.1.82.8 <none> 80:30938/TCP 5h20m

部署dashboard

wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

修改vim kubernetes-dashboard.yaml

109     spec:
110 containers:
111 - name: kubernetes-dashboard
112 image: lizhenliang/kubernetes-dashboard-amd64:v1.10.1 # 修改此行 ...... 157 spec:
158 type: NodePort # 增加此行
159 ports:
160 - port: 443
161 targetPort: 8443
162 nodePort: 30001 # 增加此行
163 selector:
164 k8s-app: kubernetes-dashboard

应用:kubectl apply -f kubernetes-dashboard.yaml

在浏览器上验证:https://172.50.13.103:30001(chrome如果打不开,换火狐)

创建service account并绑定默认cluster-admin管理员集群角色:

# step 1
kubectl create serviceaccount dashboard-admin -n kube-system
# step 2
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
# step 3
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

复制token到页面的令牌处。

健康状态检查

组件、插件健康状态检查

kubectl get cs
或者
kubectl get componentstatus

服务状态检查

systemctl status kubelet docker

检查pod状态

kubectl get pods -o wide -n kube-system

使用kubeadm部署kubernetes的更多相关文章

  1. 使用kubeadm部署Kubernetes v1.13.3

    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 这个工具能通过两条指令完成一个kubernetes集群的部署: 1. 安装要求 在开始之前,部署Kubernetes集群 ...

  2. [原]使用kubeadm部署kubernetes(一)

    #######################    以下为声明  ##################### 在公众号  木子李的菜田 输入关键词:   k8s 有系列安装文档 此文档是之前做笔记在 ...

  3. [转帖]CentOS 7 使用kubeadm 部署 Kubernetes

    CentOS 7 使用kubeadm 部署 Kubernetes   关闭swap 执行swapoff临时关闭swap. 重启后会失效,若要永久关闭,可以编辑/etc/fstab文件,将其中swap分 ...

  4. 02 . Kubeadm部署Kubernetes及简单应用

    kubeadm部署Kubernetes kubeadm简介 # kubeadm是一位高中生的作品,他叫Lucas Kaldstrom,芬兰人,17岁用业余时间完成的一个社区项目: # kubeadm的 ...

  5. 附025.kubeadm部署Kubernetes更新证书

    一 查看证书 1.1 查看过期时间-方式一 1 [root@master01 ~]# tree /etc/kubernetes/pki/ 2 [root@master01 ~]# for tls in ...

  6. Kubeadm部署Kubernetes

    Kubeadm部署Kubernetes 1.环境准备 主机名 IP 说明 宿主机系统 k8s-master 10.0.0.101 Kubernetes集群的master节点 Ubuntu2004 k8 ...

  7. 使用kubeadm部署Kubernetes集群

    一.环境架构与部署准备 1.集群节点架构与各节点所需安装的服务如下图: 2.安装环境与软件版本: Master: 所需软件:docker-ce 17.03.kubelet1.11.1.kubeadm1 ...

  8. kubeadm部署Kubernetes集群

    Preface 通过kubeadm管理工具部署Kubernetes集群,相对离线包的二进制部署集群方式而言,更为简单与便捷.以下为个人学习总结: 两者区别在于前者部署方式使得大部分集群组件(Kube- ...

  9. 使用kubernetes 官网工具kubeadm部署kubernetes(使用阿里云镜像)

    系列目录 kubernetes简介 Kubernetes节点架构图: kubernetes组件架构图: 准备基础环境 我们将使用kubeadm部署3个节点的 Kubernetes Cluster,整体 ...

  10. 解决kubeadm部署kubernetes集群镜像问题

    kubeadm 是kubernetes 的集群安装工具,能够快速安装kubernetes 集群.kubeadm init 命令默认使用的docker镜像仓库为k8s.gcr.io,国内无法直接访问,需 ...

随机推荐

  1. Linux中重定向应注意的事情

    引言 你是否见过bash ... 2>&1 1>file.txt的写法? 还没发现这样的写法有什么问题? 那么恭喜你, 看完本文你又将学会一个新知识! 重定向的错误用法 以引言中命 ...

  2. drf重写authenticate方法实现多条件登录(源码分析)

    drf重写authenticate方法实现多条件登录(源码分析) 1. 思路 JWT拓展的登录视图中, 在接受到用户名和密码时, 调用的也是Django的认证系统中提供的authenticate()来 ...

  3. Git开发、发布、缺陷分离模型概述(支持master/develop/feature/release/hotfix类型分支)

    Git是什么? Git是一种分布式版本控制系统,它可以记录文件的修改历史和版本变化,并可以支持多人协同开发.Git最初是由Linux开发者Linus Torvalds创建的,它具有高效.灵活.稳定等优 ...

  4. Python Numpy 切片和索引(高级索引、布尔索引、花式索引)

    张量(Tensor).标量(scalar).向量(vector).矩阵(matrix) Python Numpy 切片和索引(高级索引.布尔索引.花式索引) Python NumPy 广播(Broad ...

  5. 声音好听,颜值能打,基于PaddleGAN给人工智能AI语音模型配上动态画面(Python3.10)

    借助So-vits我们可以自己训练五花八门的音色模型,然后复刻想要欣赏的任意歌曲,实现点歌自由,但有时候却又总觉得少了点什么,没错,缺少了画面,只闻其声,却不见其人,本次我们让AI川普的歌声和他伟岸的 ...

  6. js 正则校验非法字符

    今日使用 vue + element 对数据录入进行非法字符校验,到处找了一圈都不是想要的,于是自己按需求写一个 1.内容可以包含 大小写字母,中文和 . ( ) . , : % 2.内容第一位不允许 ...

  7. 【Python爬虫】批量爬取网页的图片&制作数据集

            由于Python拥有强大且丰富的类库,语法简单,效率高而被广泛运用于网络爬虫,很多人都是通过爬虫认识Python.         因为小编最近正在做目标识别相关的项目,所以需要大量的 ...

  8. 深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型结构、实现、模型特点详细介绍

    深度学习应用篇-计算机视觉-图像分类[2]:LeNet.AlexNet.VGG.GoogleNet.DarkNet模型结构.实现.模型特点详细介绍 1.LeNet(1998) LeNet是最早的卷积神 ...

  9. 确保使用正确的CSI提交HW问题

    最近有用户一体机有问题,需要技术支持,首先找到我这边,其实就是一个简单的坏盘类问题,换盘即可. 在保期间,要求客户提交一个SR给后台,但是客户提交后,就一直被要求提供HW的CSI号: xxx: Can ...

  10. 【Netty】一个RPC实例

    Netty实现简易RPC调用 总体流程: 客户端发起rpc调用请求,封装好调用的接口名,函数名,返回类型,函数参数类型,函数参数值等属性,将消息发送给服务器. 服务器的handler解析rpc请求,调 ...