【Docker】Kubernetes部署

简介: Kubernetes部署,实验参考步骤

环境:

master节点: 192.168.1.10/centos

node节点:   192.168.1.11/centos

1.系统环境准备

yum环境配置

此处实验已经将k8s安装源,所需docker镜像,yaml配置文件放在本地

image.png

master节点配置本地yum源,开启ftpnode节点提供yum

image.jpeg

 

image.jpeg

配置hosts文件,master节点与node节点做法相同

[root@master K8S]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.10 master
192.168.1.11 node

 

关闭swap,关闭swap挂载,master节点与node节点做法相同(开启kube必做

image.jpeg

升级系统内核,重启,master节点与node节点做法相同

[root@master K8S]# yum -y upgrade

 

开启路由转发,master节点与node节点做法相同

[root@master ~]# touch /etc/sysctl.d/K8S.conf
[root@master ~]# vim /etc/sysctl.d/K8S.conf
#以下内容写入文件
[root@master ~]# modprobe br_netfilter
[root@master ~]# sysctl -p /etc/sysctl.d/K8S.conf 
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

image.png

node节点相同操作

 

2.Chrony时间同步配置

master节点配置chrony服务

[root@master ~]# yum –y install chrony
[root@master ~]# vim /etc/chrony.conf
#修改配置文件如图
[root@master ~]# systemctl enable chronyd
[root@master ~]# systemctl restart chronyd
[root@master ~]# timedatectl set-ntp true

image.png

 

node节点配置chrony服务

[root@node ~]# yum -y install chrony
[root@node ~]# vim /etc/chrony.conf 
#修改配置文件如图,server处设置为master的地址即可
[root@node ~]# systemctl enable chronyd
[root@node ~]# systemctl restart chronyd

image.png

node节点执行chronyc sources,如图配置成功

image.png

 

3.配置IPVS    

理论参考:

image.png

[root@master ~]# touch /etc/sysconfig/modules/ipvs.modules
[root@master ~]# vim /etc/sysconfig/modules/ipvs.modules
#写入以下内容
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
[root@master ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules
[root@master ~]# bash /etc/sysconfig/modules/ipvs.modules
#验证
[root@master ~]# lsmod|grep -e ip_vs -e nf_conntrack_ipv4
nf_conntrack_ipv4      15053 0 
nf_defrag_ipv4         12729 1 nf_conntrack_ipv4
ip_vs_sh               12688  0 
ip_vs_wrr              12697  0 
ip_vs_rr               12600  0 
ip_vs                 145497  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack          139224  2 ip_vs,nf_conntrack_ipv4
libcrc32c              12644  3 xfs,ip_vs,nf_conntrack
[root@master ~]# yum -y install ipset ipvsadm

node节点相同操作

 

 

4.Docker 安装

此处docker安装不多做解释

[root@master ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
[root@master ~]# yum -y install docker-ce docker-ce-cli containerd.io
[root@master ~]# systemctl start docker
[root@master ~]# touch /etc/docker/daemon.json
[root@master ~]# vim /etc/docker/daemon.json 
#写入以下内容到文件
{
 "exec-opts":["native.cgroupdriver=systemd"]
}
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker
[root@master ~]# systemctl enable docker

node节点相同操作

 

 

5.安装Kubernetes集群

安装服务并设置启动

[root@master ~]# yum -y install kubelet kubeadm kubectl
[root@master ~]# systemctl enable kubelet
[root@master ~]# systemctl start kubelet
master节点运行脚本,加载镜像到docker
[root@master K8S]# ./kubernetes_base.sh

node节点相同操作

 

 

初始化Kubernetes集群

master节点配置

[root@master K8S]# kubeadm init --apiserver-advertise-address 192.168.1.10 --kubernetes-version="v1.14.1" --pod-network-cidr=10.16.0.0/16
#--pod-network-cidr=10.16.0.0/16此参数需要慎重考虑,影响后续网络创建
#运行如下成功,最后输出的为其余节点加入集群的命令
kubeadm join 192.168.1.10:6443 --token j7ounb.afbmhmgmifg86ybd \
    --discovery-token-ca-cert-hash sha256:52e9c7afb44aea691efe52822148bd51fb71e8bca7e0d2a49df6443a9d0e2a71

image.jpeg

初始化操作主要经历了下面 15 个步骤,每个阶段均输出均使用[步骤名称]作为开头:

[init]:指定版本进行初始化操作。

[preflight]:初始化前的检查和下载所需要的 Docker 镜像文件。

[kubelet-start]:生成 Kubelet 的配置文件/var/lib/kubelet/config.yaml,没有这个文件Kubelet 无法启动,所以初始化之前的 Kubelet 实际上启动失败。

[certificates]:生成 Kubernetes 使用的证书,存放在/etc/kubernetes/pki 目录中。

[kubeconfig]:生成 KubeConfig 文件,存放在/etc/kubernetes目录中,组件之间通信 需要使用对应文件。

[control-plane]:使用/etc/kubernetes/manifest目录下的 YAML 文件,安装 Master 组 件。

[etcd]:使用/etc/kubernetes/manifest/etcd.yaml 安装 Etcd 服务。

[wait-control-plane]:等待 control-plan 部署的 Master 组件启动。

[apiclient]:检查 Master 组件服务状态。

[uploadconfig]:更新配置。

[kubelet]:使用 configMap 配置 Kubelet

[patchnode]:更新 CNI 信息到 Node 上,通过注释的方式记录。

[mark-control-plane]:为当前节点打标签,打了角色Master 和不可调度标签,这样默认就不会使用 Master 节点来运行 Pod

[bootstrap-token]:生成的 Token 需要记录下来,后面使用 kubeadm join 命令往集群中添加节点时会用到。

[addons]:安装附加组件 CoreDNS kube-proxy

 

 

创建用户配置文件夹

Kubectl默认会在执行的用户home目录下面的.kube目录中寻找config文件,配置kubectl 工具。

此处为root用户创建目录复制配置文件

[root@master ~]# mkdir /root/.kube
[root@master ~]# cp -i /etc/kubernetes/admin.conf /root/.kube/config
[root@master ~]# chown root:root /root/.kube/config

 

检查集群状态

image.png

 

配置flannel网络

[root@master K8S]# ls
images  Kubernetes kubernetes_base.sh  yaml
[root@master K8S]# kubectl apply -f yaml/kube-flannel.yaml

image.png

 

Node节点加入集群

[root@node ~]# kubeadm join 192.168.1.10:6443 --token e20is5.o38kb995lp24huk5  --discovery-token-ca-cert-hash sha256:4625049a4ff225437950b0de1e211ee4b9d1d1e750ee2e04b25d5664ca0aed16

 

master上执行kubectl get nodes查看节点状态,成功加入后节点显示ready

image.png

 

安装Dashboard

#安装kubernetes-dashboard
[root@master K8S]# kubectl create -f yaml/kubernetes-dashboard.yaml 
secret/kubernetes-dashboard-certs created
serviceaccount/kubernetes-dashboard created
role.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-minimal created
deployment.apps/kubernetes-dashboard created
service/kubernetes-dashboard created
#创建dashboard用户
[root@master K8S]# kubectl create -f yaml/dashboard-adminuser.yaml 
serviceaccount/kubernetes-dashboard-admin created
clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard-admin created

检测pods状态

kubectl get pods –n kube-system

image.png

若操作正常此时已经全部running状态,若有相关服务不在running状态请排错嗷

 

查看dashboard服务端口号,映射外部为30000端口

kubectl get svc –n kube-system

image.jpeg

 

浏览器访问https://ip:30000

image.jpeg

 

k8s Dashboard登陆需要令牌

kubectl -n kube-system describe secret kubernetes-dashboard-admin-token

image.jpeg

token:后面字符串输入网页登陆

image.jpeg

 

kubernetes部署到此

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
24天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
183 77
|
5天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
11天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
72 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
8天前
|
存储 Kubernetes Docker
Kubernetes(k8s)和Docker Compose本质区别
理解它们的区别和各自的优势,有助于选择合适的工具来满足特定的项目需求。
59 19
|
14天前
|
存储 Kubernetes 容器
K8S部署nexus
该配置文件定义了Nexus 3的Kubernetes部署,包括PersistentVolumeClaim、Deployment和服务。PVC请求20Gi存储,使用NFS存储类。Deployment配置了一个Nexus 3容器,内存限制为6G,CPU为1000m,并挂载数据卷。Service类型为NodePort,通过30520端口对外提供服务。所有资源位于`nexus`命名空间中。
|
1月前
|
Java 应用服务中间件 Docker
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
将基于 Spring 的 WAR 应用程序部署到 Docker:详尽指南
35 2
|
2月前
|
Kubernetes 监控 云计算
Docker与Kubernetes的协同工作
Docker与Kubernetes的协同工作
|
2月前
|
运维 Kubernetes Docker
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
53 1
|
2月前
|
Kubernetes 开发者 Docker
Docker与Kubernetes的协同工作
Docker与Kubernetes的协同工作
|
Kubernetes 开发者 微服务
简化Kubernetes应用部署工具-Helm之Hook
本文讲的是简化Kubernetes应用部署工具-Helm之Hook【编者的话】微服务和容器化给复杂应用部署与管理带来了极大的挑战。Helm是目前Kubernetes服务编排领域的唯一开源子项目,做为Kubernetes应用的一个包管理工具,可理解为Kubernetes的apt-get / yum,由Deis 公司发起,该公司已经被微软收购。
2568 0