linux部署k8s教程

article/2025/6/21 8:36:11

一.安装k8s

1.关闭防火墙

systemctl stop firewalld

2.关闭swap

swapoff -a

3.更改hosts

vim /etc/hosts

10.101.116.3 k8s-master
10.101.116.4 k9s-node1

4.安装docker

yum -y install docker-ce-18.06.1.ce-3.el7

5.配置k8s来源

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

EOF

6.kubeadm,kubelet和kubectl

yum install -y kubelet-1.13.3 kubectl-1.13.3 kubeadm-1.13.3 kubernetes-cni-1.13.3 --skip-broken

7.初始化master

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

执行命令:

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config  

安装pod网络插件

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

部署成功:

二.安装dashboard

1. 

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml

2.修改yml

# Copyright 2017 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.apiVersion: v1
kind: Namespace
metadata:name: kubernetes-dashboard---apiVersion: v1
kind: ServiceAccount
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard---kind: Service
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:type: NodePortports:- port: 443targetPort: 8443nodePort: 30001selector:k8s-app: kubernetes-dashboard---apiVersion: v1
kind: Secret
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard-certsnamespace: kubernetes-dashboard
type: Opaque---apiVersion: v1
kind: Secret
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard-csrfnamespace: kubernetes-dashboard
type: Opaque
data:csrf: ""---apiVersion: v1
kind: Secret
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard-key-holdernamespace: kubernetes-dashboard
type: Opaque---kind: ConfigMap
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard-settingsnamespace: kubernetes-dashboard---kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
rules:# Allow Dashboard to get, update and delete Dashboard exclusive secrets.- apiGroups: [""]resources: ["secrets"]resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"]verbs: ["get", "update", "delete"]# Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.- apiGroups: [""]resources: ["configmaps"]resourceNames: ["kubernetes-dashboard-settings"]verbs: ["get", "update"]# Allow Dashboard to get metrics.- apiGroups: [""]resources: ["services"]resourceNames: ["heapster", "dashboard-metrics-scraper"]verbs: ["proxy"]- apiGroups: [""]resources: ["services/proxy"]resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"]verbs: ["get"]---kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard
rules:# Allow Metrics Scraper to get metrics from the Metrics server- apiGroups: ["metrics.k8s.io"]resources: ["pods", "nodes"]verbs: ["get", "list", "watch"]---apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: kubernetes-dashboard
subjects:- kind: ServiceAccountname: kubernetes-dashboardnamespace: kubernetes-dashboard---apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: kubernetes-dashboard
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: kubernetes-dashboard
subjects:- kind: ServiceAccountname: kubernetes-dashboardnamespace: kubernetes-dashboard---kind: Deployment
apiVersion: apps/v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:replicas: 1revisionHistoryLimit: 10selector:matchLabels:k8s-app: kubernetes-dashboardtemplate:metadata:labels:k8s-app: kubernetes-dashboardspec:containers:- name: kubernetes-dashboardimage: kubernetesui/dashboard:v2.4.0imagePullPolicy: Alwaysports:- containerPort: 8443protocol: TCPargs:- --auto-generate-certificates- --namespace=kubernetes-dashboard# Uncomment the following line to manually specify Kubernetes API server Host# If not specified, Dashboard will attempt to auto discover the API server and connect# to it. Uncomment only if the default does not work.# - --apiserver-host=http://my-address:portvolumeMounts:- name: kubernetes-dashboard-certsmountPath: /certs# Create on-disk volume to store exec logs- mountPath: /tmpname: tmp-volumelivenessProbe:httpGet:scheme: HTTPSpath: /port: 8443initialDelaySeconds: 30timeoutSeconds: 30securityContext:allowPrivilegeEscalation: falsereadOnlyRootFilesystem: truerunAsUser: 1001runAsGroup: 2001volumes:- name: kubernetes-dashboard-certssecret:secretName: kubernetes-dashboard-certs- name: tmp-volumeemptyDir: {}serviceAccountName: kubernetes-dashboardnodeSelector:"kubernetes.io/os": linux# Comment the following tolerations if Dashboard must not be deployed on mastertolerations:- key: node-role.kubernetes.io/mastereffect: NoSchedule---kind: Service
apiVersion: v1
metadata:labels:k8s-app: dashboard-metrics-scrapername: dashboard-metrics-scrapernamespace: kubernetes-dashboard
spec:ports:- port: 8000targetPort: 8000selector:k8s-app: dashboard-metrics-scraper---kind: Deployment
apiVersion: apps/v1
metadata:labels:k8s-app: dashboard-metrics-scrapername: dashboard-metrics-scrapernamespace: kubernetes-dashboard
spec:replicas: 1revisionHistoryLimit: 10selector:matchLabels:k8s-app: dashboard-metrics-scrapertemplate:metadata:labels:k8s-app: dashboard-metrics-scraperspec:containers:- name: dashboard-metrics-scraperimage: kubernetesui/metrics-scraper:v1.0.7ports:- containerPort: 8000protocol: TCPlivenessProbe:httpGet:scheme: HTTPpath: /port: 8000initialDelaySeconds: 30timeoutSeconds: 30volumeMounts:- mountPath: /tmpname: tmp-volumesecurityContext:allowPrivilegeEscalation: falsereadOnlyRootFilesystem: truerunAsUser: 1001runAsGroup: 2001serviceAccountName: kubernetes-dashboardnodeSelector:"kubernetes.io/os": linux# Comment the following tolerations if Dashboard must not be deployed on mastertolerations:- key: node-role.kubernetes.io/mastereffect: NoSchedulevolumes:- name: tmp-volumeemptyDir: {}


 

3.执行命令

kubectl apply -f recommended.​​​​​​yaml

确认结果:

kubectl get pods --all-namespaces

4.创建集群用户:

kubectl create clusterrolebinding serviceaccount-cluster-admin --clusterrole=cluster-admin --user=system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard

5.获取登入token:

kubectl   describe  secrets  -n kubernetes-dashboard

结果:

三.node配置

1.先重复执行1-7,然后执行命令:

 kubeadm join 10.101.116.3:6443 --token z9p6tq.ok77ujvqoux1ir23 --discovery-token-ca-cert-hash sha256:a43ec09da697828cb4cf67429b0cb294cc80cb0dec9dca75113820976a5e53e7


http://chatgpt.dhexx.cn/article/uwZ96xWW.shtml

相关文章

K8s—使用教程

目录 什么是Kubernetes&#xff1f; Kubernetes的主要对象 Kubernetes的特征 Kubernetes体系结构 主节点&#xff08;控制平面&#xff09; 从节点&#xff08;工人节点&#xff09; Linux安装Kubernetes 什么是Kubernetes&#xff1f; Kubernetes也被称为” k8s”。这…

尚硅谷Kubernetes教程(K8s入门到精通) 01

PAAS 平台即服务 用户下单,云厂商,派出运维 构建 自动化运维工具-自动环境创建 docker公司 自动构建运行环境 容器的集群化 资源管理器 分布式系统内核 Twitter 改用k8s 退出历史舞台 kubernetes 背靠 谷歌 功能全面 稳定 go 语言(解释性 轻量级 ) 开源 弹性伸缩 负…

k8s教程(Volume篇)-PV详解

文章目录 01 引言02 PV详解2.1 示例配置详解2.1.1 存储容量 (Capacity)2.1.2 存储卷模式 (Volume Modes)2.1.3 访问模式 (Access Modes)2.1.4 存储类别(Class)2.1.5 回收策略 (Reclaim Policy)2.1.6 挂载选项 (Mount Options)2.1.6 节点亲和性 (Node Affinity) 03 文末 01 引言…

K8s 初学者入门教程

Kubernetes 简称为 K8s 文章目录 写在前面1. 什么是 K8s1.1 K8s 解决了什么问题&#xff1f;1.2 容器编排工具提供了哪些特性? 2. K8s 组件2.1 Node & Pod2.2 Service & Ingress2.3 ConfigMap & Secret2.4 Volumes2.5 Deployment & StatefulSet 3.总结参考 写…

K8s集群搭建教程

学习并总结一下使用三台虚拟机搭建一个kubernetes集群的过程。 目录 一、环境规划二、环境准备2.1 搭建流程概述&#xff1a;2.2 安装环境准备2.2.1 升级系统内核2.2.2 设置主机名和hosts本地解析2.2.3 关闭防火墙和SELinux2.2.4 时间同步2.2.5 关闭 swap 分区2.2.6 将桥接的IP…

k8s教程(Volume篇)-总结

文章目录 01 引言02 内容整理2.1 概念2.2 PV2.3 PVC2.4 StorageClass2.5 CSI 03 文末 01 引言 至此&#xff0c;volume的相关知识已经讲解完了&#xff0c;下面是相关文章的详情总结&#xff1a; 《k8s教程&#xff08;Volume篇&#xff09;-k8s存储机制概述》《k8s教程&…

【K8S教程分享】Kubernetes K8S高级视频教程

Kubernetes K8S高级视频教程&#xff0c;目前的云计算(PaaS),事实上已经以K8S为标准建立平台&#xff0c;各大开源项目也都依据K8S对接进行开发或二次开发&#xff0c;所以K8S是目前云计算领域的必备技能&#xff0c;当能结合openstackk8s双平台者的运维、开发、使用者&#xf…

k8s教程(基础篇)-安装与配置概述

文章目录 01 系统要求02 安装概述03 私有镜像库配置与升级3.1 私有镜像库配置3.2 升级 04 CRI&#xff08;容器运行时接口&#xff09;详解 4.1 CRI 概述 4.2 CRI 的主要组件 4.3 Pod 和容器的生命周期管理 4.4 面向容器级别的设计思路 4.5 尝试使用新的 Docker-CRI 来创建容器…

K8S入门教程

目录 1.Kubernetes概述 1.1 Kubernetes介绍 1.2 基本架构与常用术语 2.Kubernetes集群 2.1 环境准备与规划 2.2 Master安装 2.3 Node1安装 2.4 Node2安装 2.5 健康检查与示例测试 1.Kubernetes概述 1.1 Kubernetes介绍 1.1.1 Kubernetes是什么及作用 Kubernetes(K8S)是Google在…

k8s教程(基础篇)-入门及案例

文章目录 1. 了解 Kubernetes 1.1 Kubernetes是什么 1.2 Kubernetes的基本知识 1.2.1 Service 1.2.2 Pod 2. 为什么要用 Kubernetes 3. 从一个简单的例子开始 3.1 启动 MySQL 服务 3.1.1 Deployment定义文件 3.1.2 service定义文件 3.2 启动 Tomcat应用 3.2.1 Deployment定义文…

k8s搭建(超详细,保姆级教程)

1、简介 这里就不赘述&#xff0c;想要了解的朋友直接去这里深入了解什么是K8S。 2、环境要求 2台以上机器&#xff0c;操作系统 CentOS7.7-64位系统硬件配置&#xff1a;2GB或更多RAM&#xff0c;2个CPU或更多CPU&#xff0c;硬盘30GB或更多集群中所有机器之间网络互通可以…

k8s教程----零基础快速入门

k8s详解教程----零基础快速入门 前言&#xff1a; Kubernetes&#xff08;k8s&#xff09;作为云原生的核心平台&#xff0c;吸引了越来越多的运维、开发、测试以及其他技术员去了解学习。随着行业越来越内卷&#xff0c;k8s已经被广泛使用&#xff0c;作为一名运维人员&#…

K8S使用教程(详细)

Kubernetes详细教程 1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点…

零基础学kubernetes(k8s)必看教程,带你10分钟快速实战入门k8s

一、前言 作为一个工作十余年&#xff0c;拥有比较丰富的计算机网络运维、主机运维、云计算平台运维、自动化运维开发经验的老鸟&#xff0c;我来说说我当初刚接触Kubernetes时的一些感受以及学习技巧。 刚开始学习k8s时&#xff0c;我觉得挺难的&#xff0c;一头雾水&#x…

python input函数换行_python input函数换行_python_input函数

Python raw_input() 函数 Python内置函数 python raw_input()用来获取控制台的输入。 raw_input()将所有输入作为字符串看待,返回字符串类型。注意:input()和 raw_input()这两个函 Python input和print函数 - 箬笠蓑衣 258x256 - 5KB - PNG python row函数_row函数_python row_…

Python基础之input函数和eval函数

Python基础之&#xff08;二&#xff09; 一、 input()函数-数据输入 input()函数的功能&#xff1a;显示用户输入的值 input()函数可以包含一些提示性文字 通过使用input()函数&#xff0c;可以使用户主动输入的内容变成程序中的字符串变量的值 <字符串变量> input(&l…

函数input()讲解

目录 上次我们讲解了函数print&#xff0c;今天我们来讲它的“好兄弟”input&#xff01; 讲解 1.input与变量 2.input与提示语 3.input与print 例子 上次我们讲解了函数print&#xff0c;今天我们来讲它的“好兄弟”input&#xff01; 讲解 1.input与变量 input在pyth…

Python input函数

input()函数 import timeprint(亲爱的同学&#xff1a;) time.sleep(1)print(我们愉快地通知您&#xff0c;您已获准在霍格沃茨魔法学校就读。) time.sleep(2)print(随信附上所需书籍及装备一览。) time.sleep(1)print(学期定于九月一日开始。) time.sleep(1)print(鉴于您对魔…

python中input函数最简单详细的了解

一、input&#xff08;&#xff09;函数 有了 输入 魔法&#xff0c;程序就有了对话的功能。计算机根据你的回答进行对应的处理&#xff0c;好像能听懂你的话一样。 你通过 Python 代码向计算机提供指令&#xff0c;计算机执行指令&#xff0c;然后通过 input() 函数把问题显…

input函数和int函数的使用

第一&#xff0c;input函数接受一个标准输入数据&#xff0c;返回str类型 第二&#xff0c;int函数可以把str强制转换为整形 第三&#xff0c;int(input()) ps&#xff1a;最近搞深度学习的视频&#xff0c;但是依然需要实操