.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=4 \--etcd-servers=http://192.168.8.201:2379 \\
--insecure-bind-address=0.0.0.0 \--insecure-port=8080 \--advertise-address=192.168.8.201 \--allow-privileged=true \--service-cluster-ip-range=10.10.10.0/24 \--service-node-port-range=30000-50000 \--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=4 \--master=127.0.0.1:8080 \--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=4 \--master=127.0.0.1:8080 \--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=4 \--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=4 --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.启动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=3
kubectl expose deployment nginx --port=88 --target-port=80 --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: 1
  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: 9090
          protocol: TCP
        args:
           - --apiserver-host=http://192.168.8.201:8080
        livenessProbe:
          httpGet:
            path: /
            port: 9090
          initialDelaySeconds: 30
          timeoutSeconds: 30

---

kind: Service
apiVersion: v1
metadata:
  labels:
    app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 9090
  selector:
    app: kubernetes-dashboard

创建

kubectl create -f kube.yaml

查看pod

查看端口

访问bord

 至此集群搭建完成

原文地址:https://www.cnblogs.com/chenyishi/p/10090769.html

时间: 2024-11-05 15:53:01

.net core i上 K8S(一)集群搭建的相关文章

k8s docker集群搭建

?Kubernetes介绍 1.背景介绍 云计算飞速发展 - IaaS - PaaS - SaaS Docker技术突飞猛进 - 一次构建,到处运行 - 容器的快速轻量 - 完整的生态环境 2.什么是kubernetes 首先,他是一个全新的基于容器技术的分布式架构领先方案.Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性

k8s简单集群搭建

目录 1 环境准备 2. 实验过程 注意:在使用该文档之前,您应该要对k8s的组件有一些了解,我就不描述组件在集群中所担任的角色了, 如有需要请移步官网或其他博客.并且没有使用到证书 1 环境准备 1.1 基本环境 操作系统 CentOS Linux release 7.4.1708 (Core) 软件版本 Kubernetes v1.9.1 (后面提供tar包) etcd Version: 3.2.18(直接yum 安装)(源码包地址: https://github.com/coreos/et

2-20 MySQL集群搭建实现高可用

MySQL集群概述和安装环境 MySQL Cluster是MySQL适合于分布式计算环境的高实用.高冗余版本.Cluster的汉语是"集群"的意思.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器. MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署"内存中"数据库的 Cluster .通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求.此外,由于每个组件有自己的内存和磁盘,不存在单

简单开发k8s多集群后台

详细的说明如何利用kubernetes api创建一个支持多集群的k8s后台,这里主要实现调用kubernetes api获取查看service服务,pod服务.下一篇再说明如果操作一个service,以及注入容器console 相关的组件 Django (2.0.7) kubernetes (6.0.0) Django Rest Framework (3.8.2) Bootstrap 3.3.7 Jquery 2.1.1 pace 页面异步加载插件 新建一个基于django的k8s项目,命名为

Centos7安装部署Kubernetes(K8s)集群

Kubernetes集群的安装有多种方式:下载源码包编译安装.下载编译好的二进制包安装.使用kubeadm工具安装等.本文是以二进制文件方式安装Kubernetes集群.系统环境 主机名 IP地址 操作系统 安装组件 k8s-master 192.168.2.212 Centos 7.5 64位 etcd.kube-apiserver.kube-controller-manager.kube-scheduler k8s-node1 192.168.2.213 Centos 7.5 64位 kub

K8s集群搭建(kubeadm方案)

K8s集群搭建(kubeadm方案) 1.最少3台CentosA.至少2核CPU+2G内存+20G硬盘B.必须在同一网段本示例中分配为: Master:192.168.20.245 Worker1:192.168.20.167 Worker2:192.168.20.166 2.ip addr确认是否有分配到IPV4地址.没有的话nmtui,Automatically connect打上勾 3.用SSH连接 4.禁用防火墙, systemctl stop firewalld & systemctl

CentOS上安装Kubernetes集群(四)使用Traefi暴露Kubernetes服务

k8s的集群大多数情况需要对外服务,而服务暴露的方式有很多,这里选取traefik来讲解,其它就暂时不详细介绍,包括Istio,代后续更新后再补充上来.一句话,来不及解释,赶紧上车. Traefkik简介 Traefik是开源边缘路由器,类似 nginx.apache 那样的反向代理服务器.网关,代表系统接收请求,并找出负责处理这些请求的组件.Traefik自动发现适合您服务的配置,同时热更新支持多种负载均衡算法断路器,重试提供监控.管理 UI 界面用 go 语言开发,天然的拥抱 k8s Tra

使用ceph-deploy安装部署线上ceph分布式存储集群(centos6.6)

一:CEPH简介 OSDs: Ceph的OSD守护进程(OSD)存储数据,处理数据复制,恢复,回填,重新调整,并通过检查其它Ceph OSD守护程序作为一个心跳 向Ceph的监视器报告一些检测信息.Ceph的存储集群需要至少2个OSD守护进程来保持一个 active + clean状态.(Ceph默认制作2个备份,但你可以调整它) Monitors:Ceph的监控保持集群状态映射,包括OSD(守护进程)映射,分组(PG)映射,和CRUSH映射. Ceph 保持一个在Ceph监视器, Ceph O

vmware10上三台虚拟机的Hadoop2.5.1集群搭建

? 由于官方版本的Hadoop是32位,若在64位Linux上安装,则必须先重新在64位环境下编译Hadoop源代码.本环境采用编译后的hadoop2.5.1 . 安装参考博客: 1 http://www.micmiu.com/bigdata/hadoop/hadoop2x-cluster-setup/ 2 http://f.dataguru.cn/thread-18125-1-1.html 3 http://blog.sina.com.cn/s/blog_611317b40100t5od.ht