.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的知识点,我也是刚入门,这方面的知识建议参考博客园 ...
随机推荐
- Spring Boot tomcat参数
主题 初学SpringBoot,想要配置一下tomcat的端口,以前tomcat直接在它的XML里配置就好了.现在SpringBoot直接继承了,不知道哪里配置.后来找到解决方法,记录一下. 具体方法 ...
- Spring、Springboot常用注解:@Qualifier(不定时更新)
1.@Qualifier 出现场景: 老项目中有多个实现类实现同一个接口时,或者一个项目中有多个数据源时,spring容器不知道该注入哪个实现类或者使用哪个数据源,该注解就派上用场. 1)多实现类实现 ...
- 修改kvm虚拟机镜像大小
修改虚拟机镜像大小(qcow2/raw resize) 创建一个镜像文件,大小1G taw muxueqz@muxueqz /tmp $ qemu-img create -f raw t.raw 1G ...
- 前端开发之CSS入门篇
一.CSS介绍和语法 二.CSS引入方式 三.基本选择器 四.高级选择器 五.伪类选择器 六.伪元素选择器 1️⃣ CSS介绍和语法 1. CSS的介绍 (1)为什么需要CSS? 使用css的目的就 ...
- MongoDB动态条件之分页查询
一.使用QueryByExampleExecutor 1. 继承MongoRepository public interface StudentRepository extends MongoRepo ...
- c++ 备忘录模式(memento)
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态[DP].举个简单的例子,我们玩游戏时都会保存进度,所保存的进度以文件的 ...
- Redis学习(3)——认识配置文件redis.conf[转]
#是否作为守护进程运行 daemonize yes #配置 pid 的存放路径及文件名,默认为当前路径下 pidfile redis.pid #Redis 默认监听端口 port 6379 ...
- SQL 零碎点
1,插入数据后,返回主键ID值: INSERT INTO tablename (name) VALUES (@name);SELECT @@Identity; 使用 SELECT @@Identity ...
- 使用shell命令操作数据库
使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改.查)等各种操作 用法 mysql -uxxx –pxxx -e "mysql 命令" 当然还可以 ...
- 掌握zigbee网络里的相关的重要概论
1.zigbee无线通信,需要高频的载波来提供发射效率,zigbee模块之间要可以正常的收发,必须把接收频率设置和发射模块的载波频率一致. 2.zigbee有27个载波可以进行通信,载波叫做信道(无线 ...