kubernetes 查看网络后端:
kubectl describe configmap kube-flannel-cfg -n kube-system
可以查看到flannel的后端,默认是vxlan模式,可以把Type类型改成ipip模式。
Flannel的udp模式使用8285端口,vxlan使用8472端口。
~~~我是华丽的分隔线~~~
在pod中执行命令:
kubectl exec pod/$pod_name -- command
内核中有两种设备:tap设备和tun设备,其中tap设备处理第二层数据链路层的帧,tun设备处理第三层网络层的IP包。
flannel网络的配置文件是subnet.env,里面flannel_network是flannel网络,flannel_subnet是每个主机分配的子网。底层通过udp/vxlan/host-gw进行报文封装和转发。
flannel实质是一种覆盖网络overlaynetwork,也就是将TCP数据包装在另外一种网络包里面进行路由转发和通信,目前支持udp,vxlan,host-gw,aws-vpc,gce和alloc等数据转发方式,默认的节点之间数据通信方式是udp转发。
lsns 列出命名空间
lsns -t net列出网络命名空间
集群中的每个pod都有一个额外的隐藏容器在后台运行,称为pause容器。这个pause容器负责创建和维持网络命名空间。
不同节点上运行的pod通过IP地址互访,需要通过集群网络插件实现。按照底层依赖大致分成:overlay模式、路由模式、underlay模式。
一般BGP属于underlay模式,IPIP和vxlan属于overlay模式。
overlay模式通过vxlan网络隧道协议实现;路由模式通过vpc路由表的方式实现,性能上优于overlay模式的隧道封装;underlay模式借助驱动程序将节点的底层网络接口直接暴露给容器使用。
一般pod的IP和另外一端的端口是一对veth pair,是成对出现的。可以在pod里面执行:
ethtool -S eth0 查找对端网口peer_ifindex。
然后在worker node节点通过ip link show | grep ^$peer_ifindex去查看网口。
在flannel集群中,创建了网络给pod使用。可以容纳的宿主机数量是65535个,每个宿主机可以有256个pod。
Flannel集群网络是:x.x.x.x/16,宿主机网络是x.x.x.0/24。
~~~~我是华丽的分隔线~~~
启动Django应用:
docker run -d -p 8002:8002 --name myblog -e MYSQL_HOST=192.168.116.168 -e MYSQL_USER=root -e MYSQL_PASSWD=123456 myblog:v1
Django应用创建数据库和迁移数据:
migrate:
docker exec -ti mysql bash 进入MySQL的docker容器
python3 manage.py makemigrations
python3 manage.py migrate 创建数据库表结构和表内容
python3 manage.py createsuperuser 创建超级管理员用户
创建管理员账号,并且输入密码。
创建超级用户也可以这么做:
docker exec -ti myblog python3 manage.py createsuperuser
收集静态文件:
docker exec -ti myblog python3 manage.py collectstatic
这时候通过外网IP访问:
外网IP:8002/admin
这时候,就可以通过管理员账号登录到django的后台管理界面了。
新建一个支持中文utf-8的my.cnf配置文件,然后拷贝到镜像文件中去启动。
docker build . -t mysql:5.7-utf8 -f Dockerfile
docker tag mysql:5.7-utf8 外网IP:5000/mysql:5.7-utf8
docker push 外网IP:5000/mysql:5.7-utf8
重新使用manage.py进行初始化。
python3 manage.py migrate 创建数据库表结构和表内容
python3 manage.py createsuperuser 创建超级管理员用户
~~~我是华丽的分隔符~~~
Dockerfile格式:
FROM 指定基础镜像 比如:mysql:5.7
COPY|ADD 添加在本地的文件到镜像中
比如:copy ./* $workdir
WORKDIR 指定工作目录
RUN 构建过程中执行的命令,RUN命令创建的中间过程镜像,会被缓存,并会在下次构建中使用。如果不想使用这些缓存镜像,可以在构建时使用--no-cache参数,比如:docker build --no-cache
CMD 构建容器后调用,也就是在容器启动时才进行调用。比如:CMD ["/usr/bin/wc","--help"]
CMD与RUN有区别,CMD用于指定在容器启动时执行的命令,RUN用于指定镜像构建时需要指定的命令。
ENTRYPOINT:设置容器初始化命令,使其可执行化。
ENTRYPOINT接入点应用比较多,它与CMD非常类似,不同的是通过docker run命令执行的命令,不会覆盖ENTRYPOINT。而docker RUN命令中指定的任何参数,都会被当做参数再次传递给ENTRYPOINT接入点。dockerfile中只允许有一个ENTRYPOINT命令,多指定时会覆盖前面的设置,而只执行最后一个ENTRYPOINT接入点设置。
鼓励的话语:在这个世界上,没有什么是永恒的。只有不断的努力才能获得真正的尊重和尊严。
本文暂时没有评论,来添加一个吧(●'◡'●)