从Docker到K8S

本文详细介绍了Docker、Kubernetes和Kubesphere的关系及其使用。Docker作为容器环境,用于创建和管理容器,Kubernetes提供集群管理和容器编排,而Kubesphere是更高级的管理平台。内容包括Docker的安装、镜像管理和容器管理,Kubernetes的架构、安装步骤以及核心功能,以及Kubesphere的相关介绍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Docker/Kubernetes/Kubesphere关系

docker和k8s都需要安装在三台物理机上,然后形成k8s集群,k8s最小单位是pod,每个pod里面可以包含多个continer,每个容器就类似与镜像服务像redis、nginx、tomcat等服务。

k8s需要docker的容器环境形成可动态伸缩的分布式集群,可以用kubesphere来很方便的管理服务、日志等信息。

2 Docker

X.1 安装容器

CentOS Docker 安装 | 菜鸟教程

启动:systemctl start docker

X.2 镜像管理

docker的三大特征:仓库、镜像、容器。在linux上安装docker技术,在仓库拉取镜像,利用镜像创建多个独立的容器。镜像犹如类,容器犹如类的实例。容器的本质就是微型linux,因为只用到了内核。

网易仓库加速:docker pull hub-mirror.c.163.com/library/nginx:latest

参照tag选择对应版本:

X.3 管理容器

安装tomcat

实例容器时指定对外的端口:docker run -d -p 80:80 89749ed4f17d (IMAGE ID )

查看容器日志

进入容器:docker exec -it mysql1 /bin/bash

安装mysql

实例容器时指定对外的端口:docker run -d -p 80:80 89749ed4f17d (IMAGE ID )


进入容器:docker exec -it 5185f6188151 /bin/bash(CONTAINER ID )

总结:

  • 要删除容器就应该先停止,在删除。
  • 并且先运行run命令创建一个容器后才能进行容器的stop、start、rm
  • 如过在用run命令时,如果存在一个docker ps -a 名字相同的容器时,该命令运行不了。

安装vim:

在使用docker容器时,有可能没有安装Vi, 安装Vi:apt-get install vim,如果提示:Unable to locate package vim,则需要敲:apt-get update, 等更新完毕以后再敲命令: apt-get install vim

注意:

有的人会遇到监听 80  端口访问 html 时候,报错 404 ,确认配置文件无误后,原因是:

Nginx的docker容器中,有一个默认配置文件 /etc/nginx/nginx.conf 。还有一个默认放配置文件的目录 /etc/nginx/conf.d。nginx 会加载目录conf.d 下的 *.conf 文件。如果这些 .conf 文件的内容和 /etc/nginx/nginx.conf 文件有冲突,那么nginx会默认用 conf.d 目录下的文件配置去覆盖 nginx.conf 文件里面的配置。nginx 容器的 conf.d 目录下有个 default.conf 配置文件。

最后:

现象:

[root@localhost ~]# docker run -d -p 9000:80 centos:httpd /bin/sh -c /usr/local/bin/start.sh
d5b2bd5a7bc4895a973fe61efd051847047d26385f65c278aaa09e4fa31c4d76
docker: Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen (6bda693d1143657e46bee0300276aa05820da2b21a3d89441e820d1a274c48b6): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9000 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).

[root@localhost ~]# docker start d5b2bd5a7bc4 
Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen (4127da7466709fd45695a1fbe98e13c2ac30c2a554e18fb902ef5a03ba308438): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9000 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1))
Error: failed to start containers: d5b2bd5a7bc4

 

原因:

docker服务启动时定义的自定义链DOCKER由于某种原因被清掉
重启docker服务及可重新生成自定义链DOCKER
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination        
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        
DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination        
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0          
MASQUERADE  tcp  --  172.17.0.2           172.17.0.2           tcp dpt:8080

Chain DOCKER (2 references)
target     prot opt source               destination        
RETURN     all  --  0.0.0.0/0            0.0.0.0/0          
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8888 to:172.17.0.2:8080
root@router:playbook#iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination        
DOCKER     all  --  0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        
DOCKER     all  --  0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination        
MASQUERADE  all  --  172.17.0.0/16        0.0.0.0/0          
MASQUERADE  tcp  --  172.17.0.2           172.17.0.2           tcp dpt:8080

Chain DOCKER (2 references)
target     prot opt source               destination        
RETURN     all  --  0.0.0.0/0            0.0.0.0/0          
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:8888 to:172.17.0.2:8080

解决:

重启docker服务后再启动容器
systemctl restart docker
docker start my03_nginx

3 Kubernetes

X.1 架构

  • 每个node节点都有kubelet厂长,用于管理node节点上的所有应用程序,假如应用2挂了就会上报给主节点,然后根据情况在其它节点上部署应用2
  • 每个node节点都有kube-proxy访问代理,用于访问其它应用的方式
  • kuberctl用于告诉主节点部署当前应用,最后给kubelet发送部署指令

X.2 安装

原理

  • 所有节点安装kubelet,主节点安装kubectl和kubeadm,从节点可以不用安装这两个
  • kubeadm int初始化主节点,然后用kubeadm join将从节点加入主节点即可

安装docker

配置yum

yum install -y yum-utils

yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

三台机器都安装docker

 

//现在启动docker然后设置开机启动docker
[root@localhost ww]# systemctl enable docker --now

三台机器都配置docker 

安装kubelet/kubeadm/kubectl

和docker一样k8s也是需要物理安装,只有kuber-prox是以镜像的方式运行

下面的配置命令三台机器都要执行

下面的命令在三台物理机上都要执行

1、配置下载这三个组件的地址

2、安装三大件

3、启动三大件之一的厂长组件kubelet

安装kube-proxy

和docker一样k8s也是需要物理安装,只有kuber-prox是以镜像的方式运行

在三台中节点将内如输出到images.sh文件中,然后父权并执行下载镜像

初始化主节点并加入从节点到集群

将主节点的ip地址和主机名绑定,然后在每台机器上执行命令,让所有节点都知道主节点的位置

下面命令只在主节点执行

部署主节点的网络插件,只在主节点执行

将worker加入集群,只在从节点执行,这个命令是上面主节点靠过来的有效期为24小时

如果令牌过期的话用下面命令在主节点执行刷新即可 

部署dashboard 

用界面的方式代替kubectl等命令行的方式管理k8s

如果下载失败就到浏览器中获取文本后粘贴到下面文件中即可

因此只需要k8s集群中的任意一台物理机的ip+30753端口就能访问到这个服务了

 

获取令牌

X.3 核心

4 Kubesphere

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不努力谁会可怜你?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值