.net core i上 K8S(一)集群搭建
1.前言
以前搭建集群都是使用nginx反向代理,但现在我们有了更好的选择——K8S。我不打算一上来就讲K8S的知识点,因为知识点还是比较多,我打算先从搭建K8S集群讲起,我也是在搭建集群的过程中熟悉了K8S的一些概念,希望对大家有所帮助。K8S集群的搭建难度适中,网上有很多搭建k8s的教程,我搭建的过程中或多或少遇到一些问题,现在就把我总结完的教程给大家总结一下。这里主要讲通过二进制包安装K8S
2.集群组件介绍
节点 | ip | 组件 |
master | 192.168.8.201 |
etcd:存储集群节点信息 kubectl:管理集群组件,通过kubectl控制集群 kube-controller-manage:监控节点是否健康,不健康则自动修复至健康状态 kube-scheduler:负责为kube-controller-manage创建的pod选择合适的节点,将节点信息写入etcd |
node | 192.168.8.202 |
kube-proxy:service与pod通信 kubelet:kube-scheduler将节点数据存入etcd后,kubelet获取到并按规则创建pod docker |
3.etcd安装
- yum install etcd –y
- vi /etc/etcd/etcd.conf
修改etcd.conf内容
- ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
启动
- systemctl start etcd
- systemctl enable etcd
4.下载k8s安装包
打开github中k8s地址,选择一个版本的安装包
点击CHANGELOG-1.13.md,在master节点上安装server包,node节点上安装node包
5.master节点安装server
- tar zxvf kubernetes-server-linux-amd64.tar.gz #解压
- mkdir -p /opt/kubernetes/{bin,cfg} #创建文件夹
- mv kubernetes/server/bin/{kube-apiserver,kube-scheduler,kube-controller-manager,kubectl} /opt/kubernetes/bin #移动文件到上一步的文件夹
chmod +x /opt/kubernetes/bin/*
5.1配置apiserver
- cat <<EOF >/opt/kubernetes/cfg/kube-apiserver
- KUBE_APISERVER_OPTS="--logtostderr=true \\
- --v= \\
- --etcd-servers=http://192.168.8.201:2379 \\
- --insecure-bind-address=0.0.0.0 \\
- --insecure-port= \\
- --advertise-address=192.168.8.201 \\
- --allow-privileged=true \\
- --service-cluster-ip-range=10.10.10.0/ \\
- --service-node-port-range=- \\
- --admission-control=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ResourceQuota"
- EOF
- cat <<EOF >/usr/lib/systemd/system/kube-apiserver.service
- [Unit]
- Description=Kubernetes API Server
- Documentation=https://github.com/kubernetes/kubernetes
- [Service]
- EnvironmentFile=-/opt/kubernetes/cfg/kube-apiserver
- ExecStart=/opt/kubernetes/bin/kube-apiserver \$KUBE_APISERVER_OPTS
- Restart=on-failure
- [Install]
- WantedBy=multi-user.target
- EOF
5.2配置kube-controller-manager
- cat <<EOF >/opt/kubernetes/cfg/kube-controller-manager
- KUBE_CONTROLLER_MANAGER_OPTS="--logtostderr=true \\
- --v= \\
- --master=127.0.0.1: \\
- --leader-elect=true \\
- --address=127.0.0.1"
- EOF
- cat <<EOF >/usr/lib/systemd/system/kube-controller-manager.service
- [Unit]
- Description=Kubernetes Controller Manager
- Documentation=https://github.com/kubernetes/kubernetes
- [Service]
- EnvironmentFile=-/opt/kubernetes/cfg/kube-controller-manager
- ExecStart=/opt/kubernetes/bin/kube-controller-manager \$KUBE_CONTROLLER_MANAGER_OPTS
- Restart=on-failure
- [Install]
- WantedBy=multi-user.target
- EOF
5.3配置kube-scheduler
- cat <<EOF >/opt/kubernetes/cfg/kube-scheduler
- KUBE_SCHEDULER_OPTS="--logtostderr=true \\
- --v= \\
- --master=127.0.0.1: \\
- --leader-elect"
- EOF
- cat <<EOF >/usr/lib/systemd/system/kube-scheduler.service
- [Unit]
- Description=Kubernetes Scheduler
- Documentation=https://github.com/kubernetes/kubernetes
- [Service]
- EnvironmentFile=-/opt/kubernetes/cfg/kube-scheduler
- ExecStart=/opt/kubernetes/bin/kube-scheduler \$KUBE_SCHEDULER_OPTS
- Restart=on-failure
- [Install]
- WantedBy=multi-user.target
- EOF
5.4运行kube-api与kube-controller-manager与kube-scheduler
- vim ku.sh #创建一个脚本,内容如下
- #!/bin/bash
- systemctl daemon-reload
- systemctl enable kube-apiserver
- systemctl restart kube-apiserver
- systemctl enable kube-controller-manager
- systemctl restart kube-controller-manager
- systemctl enable kube-scheduler
- systemctl restart kube-scheduler
执行以上脚本
- chmod +x *.sh #给权限
- ./ku.sh #运行
5.5将kubectl配置到环境变量,便于执行
- echo "export PATH=$PATH:/opt/kubernetes/bin" >> /etc/profile
- source /etc/profile
至此server安装成功,可通过命令查看相关进程是否启动成功
- ps -ef |grep kube
启动失败可通过以下命令查看信息
- journalctl -u kube-apiserver
6.安装node节点
6.1docker安装
- sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- sudo yum makecache fast
- sudo yum -y install docker-ce
- sudo systemctl start docker
6.2解压node.zip包
- tar zxvf kubernetes-node-linux-amd64.tar.gz
- mkdir -p /opt/kubernetes/{bin,cfg}
- mv kubernetes/node/bin/{kubelet,kube-proxy} /opt/kubernetes/bin/
chmod +x /opt/kubernetes/bin/*
6.3创建配置文件
- vim /opt/kubernetes/cfg/kubelet.kubeconfig
- apiVersion: v1
- kind: Config
- clusters:
- - cluster:
- server: http://192.168.8.201:8080
- name: kubernetes
- contexts:
- - context:
- cluster: kubernetes
- name: default-context
- current-context: default-context
- vim /opt/kubernetes/cfg/kube-proxy.kubeconfig
- apiVersion: v1
- kind: Config
- clusters:
- - cluster:
- server: http://192.168.8.201:8080
- name: kubernetes
- contexts:
- - context:
- cluster: kubernetes
- name: default-context
- current-context: default-context
- cat <<EOF >/opt/kubernetes/cfg/kubelet
- KUBELET_OPTS="--logtostderr=true \\
- --v= \\
- --address=192.168.8.202 \\
- --hostname-override=192.168.8.202 \\
- --kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig \\
- --allow-privileged=true \\
- --cluster-dns=10.10.10.2 \\
- --cluster-domain=cluster.local \\
- --fail-swap-on=false \\
- --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google-containers/pause-amd64:3.0"
- EOF
- cat <<EOF >/usr/lib/systemd/system/kubelet.service
- [Unit]
- Description=Kubernetes Kubelet
- After=docker.service
- Requires=docker.service
- [Service]
- EnvironmentFile=-/opt/kubernetes/cfg/kubelet
- ExecStart=/opt/kubernetes/bin/kubelet \$KUBELET_OPTS
- Restart=on-failure
- KillMode=process
- [Install]
- WantedBy=multi-user.target
- EOF
- cat <<EOF >/opt/kubernetes/cfg/kube-proxy
- KUBE_PROXY_OPTS="--logtostderr=true \
- --v= \
- --hostname-override=192.168.8.202 \
- --kubeconfig=/opt/kubernetes/cfg/kube-proxy.kubeconfig"
- EOF
- cat <<EOF >/usr/lib/systemd/system/kube-proxy.service
- [Unit]
- Description=Kubernetes Proxy
- After=network.target
- [Service]
- EnvironmentFile=-/opt/kubernetes/cfg/kube-proxy
- ExecStart=/opt/kubernetes/bin/kube-proxy \$KUBE_PROXY_OPTS
- Restart=on-failure
- [Install]
- WantedBy=multi-user.target
- EOF
6.4启动kube-proxy与kubelet
- vim ku.sh
- #!/bin/bash
- systemctl daemon-reload
- systemctl enable kubelet
- systemctl restart kubelet
- systemctl enable kube-proxy
- systemctl restart kube-proxy
至此node安装完成,查看是否安装成功
失败则查看日志
- journalctl -u kubelet
7.master节点验证是否有node节点
查看集群健康状态
至此master与node安装成功
8.启动一个nginx示例
- kubectl run nginx --image=nginx --replicas=
- kubectl expose deployment nginx --port= --target-port= --type=NodePort
验证
浏览器访问
9.安装dashbord
vim kube.yaml
- apiVersion: extensions/v1beta1
- kind: Deployment
- metadata:
- labels:
- app: kubernetes-dashboard
- name: kubernetes-dashboard
- namespace: kube-system
- spec:
- replicas:
- selector:
- matchLabels:
- app: kubernetes-dashboard
- template:
- metadata:
- labels:
- app: kubernetes-dashboard
- annotations:
- scheduler.alpha.kubernetes.io/tolerations: |
- [
- {
- "key": "dedicated",
- "operator": "Equal",
- "value": "master",
- "effect": "NoSchedule"
- }
- ]
- spec:
- containers:
- - name: kubernetes-dashboard
- image: registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.7.0
- imagePullPolicy: Always
- ports:
- - containerPort:
- protocol: TCP
- args:
- - --apiserver-host=http://192.168.8.201:8080
- livenessProbe:
- httpGet:
- path: /
- port:
- initialDelaySeconds:
- timeoutSeconds:
- ---
- kind: Service
- apiVersion: v1
- metadata:
- labels:
- app: kubernetes-dashboard
- name: kubernetes-dashboard
- namespace: kube-system
- spec:
- type: NodePort
- ports:
- - port:
- targetPort:
- selector:
- app: kubernetes-dashboard
创建
- kubectl create -f kube.yaml
查看pod
查看端口
访问bord
至此集群搭建完成
.net core i上 K8S(一)集群搭建的更多相关文章
- K8S之集群搭建
转自声明 ASP.NET Core on K8S深入学习(1)K8S基础知识与集群搭建 1.K8S环境搭建的几种方式 搭建K8S环境有几种常见的方式如下: (1)Minikube Minikube是一 ...
- 初试 Centos7 上 Ceph 存储集群搭建
转载自:https://cloud.tencent.com/developer/article/1010539 1.Ceph 介绍 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件系统 ...
- K8s 上的分布式存储集群搭建(Rook/ceph)
转载自:https://mp.weixin.qq.com/s/CdLioTzU4oWI688lqYKXUQ 1 环境准备 1.1 基础环境 3台配置一致的虚拟机 虚拟机配置:4c 8g 虚拟机操作系统 ...
- k8s docker集群搭建
一.Kubernetes系列之介绍篇 •Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器 ...
- Kubernetes(k8s) docker集群搭建
原文地址:https://blog.csdn.net/real_myth/article/details/78719244 一.Kubernetes系列之介绍篇 •Kubernetes介绍 1.背 ...
- 使用国内的镜像源搭建 kubernetes(k8s)集群
1. 概述 老话说的好:努力学习,提高自己,让自己知道的比别人多,了解的别人多. 言归正传,之前我们聊了 Docker,随着业务的不断扩大,Docker 容器不断增多,物理机也不断增多,此时我们会发现 ...
- 2-20 MySQL集群搭建实现高可用
MySQL集群概述和安装环境 MySQL Cluster是MySQL适合于分布式计算环境的高实用.高冗余版本.Cluster的汉语是"集群"的意思.它采用了NDB Cluster ...
- 前端静态站点在阿里云自建 K8S DevOps 集群上优雅的进行 CI/CD
目录 网站 域名 K8S DevOps 集群 私有 Gitlab 使用 Docker 编译站点 * Dockerfile * 构建编译 Image * 测试编译 Image * 推送镜像到 Aliyu ...
- .Net Core2.1 秒杀项目一步步实现CI/CD(Centos7.2)系列一:k8s高可用集群搭建总结以及部署API到k8s
前言:本系列博客又更新了,是博主研究很长时间,亲自动手实践过后的心得,k8s集群是购买了5台阿里云服务器部署的,这个集群差不多搞了一周时间,关于k8s的知识点,我也是刚入门,这方面的知识建议参考博客园 ...
随机推荐
- 团队作业4Alpha冲刺
仓库地址:https://gitee.com/ILoveFunGame/game_strategy_network.git 第一天 2018/6/13 1.1 今日完成任务情况以及遇到的问题. 1.1 ...
- Unity Pitfall 汇总
[Unity Pitfall 汇总] 1. 当脚本被绑定到一个对象时,一个类对象即会被创建,此意味着此类构造函数会被调用.所以在构造函数中不要调用任何运行时才创建的类.相应的初始化方代码应该移至Sta ...
- C#使用NPOI导出excel设置单元格背景颜色
ICellStyle cellStyle = workbook.CreateCellStyle(); cellStyle.FillPattern = FillPattern.SolidForegrou ...
- $(window).load()和$(document).ready()
一.前言 我们在编写前端代码的js文件时,往往是会先写一个$(function(){}),然后才会在大括号里面继续写我们自己的代码.当时并不能理解为什么要添加这样一个东西,只是把它当做一个标签一样添加 ...
- 快速上手Runtime(三)之方法交换
开发过程中,我们经常会用到系统类,而它提供的方法又不能完全满足我们开发的需要,那么在此时,我们需要为系统自带的方法扩展一些功能,而且还要保证原有的功能可正常使用.假设咱们现在有这么一个需求,我们在调用 ...
- 深入浅出iptables
一. 防火墙是什么 1. 防火墙简述 防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性.它通过访问控制机制,确定哪些内部服务允许外部访问,以及允许哪些外部请求可 ...
- VM 监控信息布局
<div ng-show="showVmChart"> <div class="row"> <div class="co ...
- 19-字符切割函数c++模板
https://www.cnblogs.com/stonebloom-yu/p/6542756.html #include <cstring> #include <cstdio> ...
- JAVA 上加密算法的实现用例,MessageDigest介绍
第 1 章基础知识 1.1. 单钥密码体制 单钥密码体制是一种传统的加密算法,是指信息的发送方和接收方共同使用同一把密钥进行加解密. 通常 , 使用的加密算法 比较简便高效 , 密钥简短,加解密速度快 ...
- Python的内建比较函数cmp比较原理剖析-乾颐堂
cmp( x, y):比较2个对象,前者小于后者返回-1,相等则返回0,大于后者返回1. Python的cmp比较函数比较原理 Python的cmp函数可以比较同类型之间,或者不同数据类型之间.然后根 ...