19.Kubernetes(一)-----初步认识K8s、K8s集群部署

一、Kubernetes简介

1.kubernetes

  • kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
  • 它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
  • 在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。
  • 特点
    • 可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
      
    • 可扩展: 模块化,插件化,可挂载,可组合
      
    • 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
      

2.部署方式的选择

  • 传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。
  • 新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。

3.容器部署优势

  • 容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release 的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。

二、Kubernetes集群部署的设备环境

主机ip服务作用
server1172.25.15.1docker、haobor仓库搭建网络仓库
server2172.25.15.2docker、kubelet kubeadm kubectl集群节点
server3172.25.15.3docker、kubelet kubeadm kubectl集群节点
server4172.25.15.4docker、kubelet kubeadm kubectl集群master

三、Kubernetes集群部署步骤

1.关闭交换分区


[root@server2 ~]# swapoff -a
[root@server2 ~]# vim /etc/fstab
[root@server2 ~]# cat /etc/fstab 

[root@server3 ~]# swapoff -a
[root@server3 ~]# vim /etc/fstab 
[root@server3 ~]# tail -n3 /etc/fstab 

[root@server4 ~]# swapoff -a
[root@server4 ~]# vim /etc/fstab 
[root@server4 ~]# tail -n3 /etc/fstab

请添加图片描述
请添加图片描述
请添加图片描述

2.systemd

关闭节点的selinux和iptables防火墙
所有节点部署docker引擎

## server2 3 4相同部署
[root@server2 ~]# vim /etc/docker/daemon.json 
[root@server2 ~]# cat /etc/docker/daemon.json
{
"registry-mirrors" : ["https://reg.westos.org"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
[root@server2 ~]# systemctl restart docker
[root@server2 ~]# docker info

[root@server2 ~]# scp /etc/docker/daemon.json server3:/etc/docker/
[root@server2 ~]# scp /etc/docker/daemon.json server4:/etc/docker/

[root@server2 ~]# cd /etc/sysctl.d/
[root@server2 sysctl.d]# ls
99-sysctl.conf  docker.conf
[root@server2 sysctl.d]# cat docker.conf 
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
[root@server2 sysctl.d]# scp docker.conf server3/4 :/etc/system		#保证docker 状态正常

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

3.安装部署k8s仓库

## 相同操作server2 3 4 
[root@server2 yum.repos.d]# ls
redhat.repo  westos.repo
[root@server2 yum.repos.d]# vim westos.repo 
[root@server2 yum.repos.d]# vim k8s.repo
[root@server2 yum.repos.d]# cat k8s.repo 
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
[root@server2 yum.repos.d]# yum repolist


## 将仓库配置文件传给server3和server4
[root@server2 yum.repos.d]# scp k8s.repo server3:/etc/yum.repos.d/
k8s.repo                                100%  129   157.7KB/s   00:00    
[root@server2 yum.repos.d]# scp k8s.repo server4:/etc/yum.repos.d/
k8s.repo                                100%  129   147.7KB/s   00:00    
## 安装 kubelet kubeadm kubectl
[root@server2 yum.repos.d]# yum install -y kubelet kubeadm kubectl
[root@server2 yum.repos.d]# systemctl enable --now kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.

[root@server2 yum.repos.d]# systemctl enable docker.service

[root@server3 ~]# yum install -y kubelet kubeadm kubectl
[root@server3 ~]# systemctl enable --now kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
[root@server3 ~]# systemctl enable docker.service

[root@server4 ~]# yum install -y kubelet kubeadm kubectl
[root@server4 ~]# systemctl enable --now kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.
[root@server4 ~]# systemctl enable docker.service

请添加图片描述
请添加图片描述
请添加图片描述

server3和server4安装kubelet kubeadm kubectl

请添加图片描述
请添加图片描述

4.拉取镜像并上传到网络仓库

查看默认配置信息
[root@server2 yum.repos.d]# kubeadm config print init-defaults

修改镜像仓库,列出所需镜像
[root@server2 yum.repos.d]# kubeadm config images list --image-repository registry.aliyuncs.com/google_containers

拉取镜像
[root@server2 yum.repos.d]# kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
[root@server2 yum.repos.d]# docker images | grep registry.aliyuncs.com

## 将镜像传到haobor仓库
## server2
[root@server2 yum.repos.d]# docker images |grep ^registry.aliyuncs.com | awk '{print $1":"$2}'
## 打标签
[root@server2 yum.repos.d]# docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.21.3 reg.westos.org/k8s/kube-apiserver:v1.21.3
[root@server2 yum.repos.d]# docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.21.3 reg.westos.org/k8s/kube-scheduler:v1.21.3
[root@server2 yum.repos.d]# docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.21.3 reg.westos.org/k8s/kube-controller-manager:v1.21.3
[root@server2 yum.repos.d]# docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.21.3 reg.westos.org/k8s/kube-proxy:v1.21.3
[root@server2 yum.repos.d]# docker tag registry.aliyuncs.com/google_containers/pause:3.4.1 reg.westos.org/k8s/pause:3.4.1
[root@server2 yum.repos.d]# docker tag registry.aliyuncs.com/google_containers/etcd:3.4.13-0 reg.westos.org/k8s/etcd:3.4.13-0

## 导入
[root@server2 yum.repos.d]# docker images |grep reg.westos.org | awk '{print $1":"$2}'  

[root@server2 yum.repos.d]# docker push reg.westos.org/k8s/kube-apiserver:v1.21.3

[root@server2 yum.repos.d]# docker push reg.westos.org/k8s/kube-controller-manager:v1.21.3

[root@server2 yum.repos.d]# docker push reg.westos.org/k8s/kube-scheduler:v1.21.3

[root@server2 yum.repos.d]# docker push reg.westos.org/k8s/kube-proxy:v1.21.3

[root@server2 yum.repos.d]# docker push reg.westos.org/k8s/pause:3.4.1

[root@server2 yum.repos.d]# docker push reg.westos.org/k8s/etcd:3.4.13-0

请添加图片描述

图形创建k8s仓库目录

请添加图片描述

server2上传

请添加图片描述

server1 上传coredns/coredns:1.8.0 到仓库

[root@server1 ~]# docker pull coredns/coredns:1.8.0
1.8.0: Pulling from coredns/coredns
c6568d217a00: Pull complete 
5984b6d55edf: Downloading [====================================>              ]5984b6d55edf: Pull complete 
[root@server1 ~]# docker tag coredns/coredns:1.8.0  reg.westos.org/k8s/coredns:v1.8.0
[root@server1 ~]# docker push reg.westos.org/k8s/coredns:v1.8.0
The push refers to repository [reg.westos.org/k8s/coredns]
69ae2fbf419f: Pushed 
225df95e717c: Pushed 
v1.8.0: digest: sha256:10ecc12177735e5a6fd6fa0127202776128d860ed7ab0341780ddaeb1f6dfe61 size: 739
[root@server1 ~]# 

请添加图片描述

仓库查看

请添加图片描述

5. 初始化集群

server4做

[root@server4 yum.repos.d]# kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.westos.org/k8s
#--pod-network-cidr=10.244.0.0/16使用flannel网络组件时必须添加
[root@server4 docker]# export KUBECONFIG=/etc/kubernetes/admin.conf
[root@server4 docker]# cd
[root@server4 ~]# vim .bash_profile 

请添加图片描述
请添加图片描述

6.安装flanne网络组件


[root@server2 ~]# docker tag flannel:v0.14.0 reg.westos.org/library/flannel:v0.14.0 
[root@server2 ~]# docker push reg.westos.org/library/flannel:v0.14.0
[root@server4 ~]# cat .bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin
export PATH
export KUBECONFIG=/etc/kubernetes/admin.conf		#添加
[root@server4 ~]# source .bash_profile
[root@server4 ~]# echo "source <(kubectl completion bash)" >> ~/.bashrc		#配置kubectl命令补齐功能
[root@server4 ~]# ls
kube-flannel.yml
[root@server4 ~]# vim kube-flannel.yml 
[root@server4 ~]# kubectl apply -f kube-flannel.yml

请添加图片描述
请添加图片描述
请添加图片描述

7.各节点join(加入节点)

[root@server3 ~]# kubeadm join 172.25.15.4:6443 --token p4tut6.nzi366cmdb9u7ggp --discovery-token-ca-cert-hash sha256:aa6fcb8ca5e1b146926c4ffc00a0f480e0c086258d0386caf2dfb1d4d1d98edd
[root@server2 ~]# kubeadm join 172.25.15.4:6443 --token p4tut6.nzi366cmdb9u7ggp \
> --discovery-token-ca-cert-hash sha256:aa6fcb8ca5e1b146926c4ffc00a0f480e0c086258d0386caf2dfb1d4d1d98edd

请添加图片描述
请添加图片描述

8.查看集群

[root@server4 ~]# kubectl get pod --namespace kube-system
[root@server4 ~]# kubectl get node

请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值