- 博客(105)
- 收藏
- 关注
原创 kubernetes 查询容器的 network namespace
简介命名空间是容器使用的主要方面之一(请参见下图)。 它们提供了一种隔离形式,允许容器保持可移植性并与主机系统分离。尽管 Linux 内核提供了各种类型的名称空间,在本文中,我们将研究如何查看 Kubernetes 集群中容器的 network namespace,这对于故障排除和学习非常有用。普通方式查询一般情况下,可以通过 ip netnd list命令查看主机的 network namespace,但是,在 kubernetes 集群的主机上,不会返回 network names.
2021-02-23 13:54:33 2655
原创 golang 并发和锁
并发安全和锁有时候在Go代码中可能会存在多个goroutine同时操作一个资源(临界区),这种情况会发生竞态问题(数据竞态)。类比现实生活中的例子有十字路口被各个方向的的汽车竞争;还有火车上的卫生间被车厢里的人竞争。举个例子:var x int64var wg sync.WaitGroupfunc add() { for i := 0; i < 5000; i++ { x = x + 1 } wg.Done()}func main() {
2020-05-30 23:25:50 1420
原创 kubernetes api微服务开发之访问api server
[kubernetes api微服务开发之访问api server](http://www.appblog.cn/2019/07/11/kubernetes%20api%E5%BE%AE%E6%9C%8D%E5%8A%A1%E5%BC%80%E5%8F%91%E4%B9%8B%E8%AE%BF%E9%97%AEapi%20server/)
2020-05-05 17:22:10 1101
原创 Fabric8 连接 kubernetes
Fabric8 client 连接 Kubernetes 示例package io.fabric8.kubernetes.examples;import io.fabric8.kubernetes.api.model.Namespace;import io.fabric8.kubernetes.api.model.NamespaceBuilder;import io.fabric8.ku...
2020-04-30 23:59:27 2883
原创 kubernetes 删除namespace 后一直处于Terminating状态
出现无法删除的情况,是因为kubelet 阻塞,有其他的资源在使用该namespace,比如CRD等,尝试重启kubelet,再删除该namespace 也不好使。在尝试以下命令强制删除也不好使:kubectl delete ns <terminating-namespace> --force --grace-period=0解决:1.运行以下命令以查看处于“Ter...
2020-02-09 12:52:50 12767 6
原创 OPA 防止服务重定向
服务重定向1.创建一个prod namespacekubectl create ns prod2.创建应用demo.yaml################################################################################################### Details service###############...
2019-10-31 23:20:20 450
原创 OpenPolicyAgent with kubernetes 入门
Open Policy Agent是一种策略控制软件。本篇参看官网:deploy opa with kubernetes,此列不适用Admission Controller。如果对使用Admission Controller有兴趣可以参考Admission Control Tutorial 和Kubernetes Admission Control Guide 。Kubernetes编辑R...
2019-08-31 22:01:13 857
原创 搭建NFS存储服务
搭建存储服务这里搭建了nfs 的存储服务,以Centos7 为例。安装NFSyum install -y nfs-utilsrpcbind 也会自定安装启动NFS 服务sudo systemctl enable rpcbindsudo systemctl enable nfs配置共享目录服务启动之后,我们在服务端配置一个共享目录sudo mkdir /datasudo...
2019-08-31 21:18:25 363
转载 kubernetes-helm部署及本地repo搭建
0. Helm架构主要由3部分组成:helm client 用来部署Tiller server 用来管理Chart repository 用来管理Chart package tiller 用来管理release chart repo1. Helm Client安装helm client主要作用如下:用来部署Tiller server 用来管理C...
2019-08-21 15:18:56 3378
原创 kafka operator与 kafka-manager安装
前提条件运行良好的kubernetes节点搭建存储服务这里搭建了nfs 的存储服务安装NFSyum install -y nfs-utilsrpcbind 也会自定安装启动NFS 服务sudo systemctl enable rpcbindsudo systemctl enable nfs配置共享目录服务启动之后,我们在服务端配置一个共享目录sudo mkdi...
2019-07-31 11:07:12 2802
原创 couchbase报错: You must encode a string in a string or interface
在调用接口时couchbase服务报错。原来的代码:func (impl *Impl) GetResourceByID(ctx context.Context, metadata *core.Meta) (*types.Struct, error) { impl.logger.Debugw("searching for item", "item", metadata) umarsha...
2019-06-20 16:29:34 335
原创 curl 命令访问 kubernetes API server
Kubernetes是一个完全基于API的系统。使用curl或Postman等简单工具,在构建应用程序之前获取API信息更方便。要与Kubernetes API进行交互,您需要具有正确权限的ServiceAccount,通过(Cluster)Role和RoleBinding获得。使用ServiceAccount的token进行身份验证。由于所有通信都通过TLS进行,因此您还需要自签名证书(c...
2019-06-16 19:07:12 5273 1
原创 goalng 文件编译报错:other declaration of Impl
goalng 文件编译报错:pkg/service/esqueryapi/wire_gen.go:18:6: `NewEsImpl` redeclared in this block (typecheck)func NewEsImpl(logger *zap.SugaredLogger, cfg *ArgsConfig) *Impl { ^pkg/service/esquer...
2019-06-05 15:58:21 3851
原创 问题解决:devstack@q-agt.service 服务failed。
在devstack安装的环境中devstack@q-agt.service 服务总是重启失败。看下该unit的日志报错:Unable to deploy instance for loadbalancer: 5c5a983f-29a6-4752-9acd-5e9a72765367#033[00m: TimeoutException: Commands [<ovsdbapp.sche...
2019-03-21 17:12:47 1593
原创 问题解决:devstack安装过程报错stack.sh failing giving error "g-api did not start"
有时安装devstack时,会报错:stack.sh failing giving error "g-api did not start"那么,有两种方式解决:1. 编辑functions-common:注释 $SYSTEMCTL start $systemd_service添加 reload_service $systemd_service上一句是启动服务,但是安装过程中服务是...
2019-02-22 19:35:35 3274 1
原创 open /run/flannel/subnet.env: no such file or directory
查看pod的信息时发现报错:open /run/flannel/subnet.env: no such file or directory一是查看各个节点,包括master 节点是否有/run/flannel/subnet.env,内容应该是类似如下:FLANNEL_NETWORK=10.244.0.0/16FLANNEL_SUBNET=10.244.0.1/24FLANNEL_MT...
2019-01-31 09:43:23 19859 3
原创 centos7 openstack与kubernetes(v1.11.0)的集成
目录一、安装openstack的测试环境二、安装部署kubernetesKubernetes 介绍准备工作正式安装检查kubelet使用的cgroup driver设置master节点参与工作负载网络部署节点配置kubernetes-dashboard安装三、配置cloud provider该文档用于介绍部署openstack和kubernetes...
2019-01-18 17:11:19 1118
原创 使用Ambassador容器构建docker容器集群
当两个Docker容器在同一主机(或虚拟机)时,可以通过 --link 命令让两者直接互相访问。如果要跨主机实现容器互联,则往往需要容器知道物理主机的ip地址。利用Ambassador 容器机制,可以让互联的容器无需知道所在物理主机的IP地址即可互联。基本场景Ambassador 容器也是一种 docker 容器,她在内部提供了转发服务。如下图。当客户端容器要访问服务器时,直接访问客户...
2018-12-30 23:53:21 783
原创 docker的安全机制
内核命名空间Docker 容器和 LXC 容器很相似,所提供的安全特性也差不多。当用 docker run 启动一个容器时,在后台 Docker 为容器创建了一个独立的命名空间和控制组集合。命名空间提供了最基础也是最直接的隔离,在容器中运行的进程不会被运行在主机上的进程和其它容器发现和作用。每个容器都有自己独有的网络栈,意味着它们不能访问其他容器的 sockets 或接口。不过,如...
2018-11-30 21:26:16 716
原创 6.3 利用数据卷容器迁移数据
利用数据卷容器来备份、恢复、迁移数据卷可以利用数据卷对其中的数据进行进行备份、恢复和迁移。备份首先使用 --volumes-from 标记来创建一个加载 dbdata 容器卷的容器,并从主机挂载当前目录到容器的 /backup 目录。命令如下:$ sudo docker run --volumes-from dbdata -v $(pwd):/backup ubuntutar...
2018-11-30 17:20:21 520
原创 6.2 数据卷容器
如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器。数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的。首先,创建一个名为 dbdata 的数据卷容器:$ sudo docker run -d -v /dbdata --name dbdata training/postgresecho Data-only container for postgre...
2018-11-30 17:11:10 229
原创 Docker 数据管理-6.1 数据卷
如何在 Docker 内部以及容器之间管理数据,在容器中管理数据主要有两种方式:数据卷(Data volumes) 数据卷容器(Data volume containers)本节先介绍数据卷,下一节介绍数据卷容器。数据卷数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新...
2018-11-30 17:06:36 197
原创 5.3-docker仓库配置文件
Docker 的 Registry 利用配置文件提供了一些仓库的模板(flavor),用户可以直接使用它们来进行开发或生产部署。模板若通过docker-registry源码安装,在 config_sample.yml 文件中,该文件位于docker-registry源码目录下,可以看到一些现成的模板段:common :基础配置 local :存储数据到本地文件系统 s3 :...
2018-11-30 16:56:06 607
原创 Docker仓库-5.1DockerHub
Docker Hub目前 Docker 官方维护了一个公共仓库 Docker Hub,其中已经包括了超过 15,000的镜像。大部分需求,都可以通过在 Docker Hub 中直接下载镜像来实现。登录可以通过执行 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。 注册成功后,本地用户目录的 .dockercfg 中将保存用户的认证信息。基本操作用户...
2018-11-28 21:39:53 226
原创 4.6-容器访问
外部访问容器容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。使用 docker ps 可以看到,本地主机的 49155 被映射到了容器的 5000 端口。此时访问本机的 49155 端口即可访问容器内 web 应用提供的界面。...
2018-10-27 15:05:32 398
原创 4.5-导入和导出容器
1.导出容器如果要导出本地某个容器,可以使用 docker export 命令。格式为:docker export [OPTIONS] CONTAINER主要选项:-o, --output string :导出到一个指定文件中。 $ sudo docker ps -a $ sudo docker export ebffb5576461 > ubuntu.tar...
2018-10-27 14:56:03 900
原创 4.4-删除容器
使用docker rm 删除容器。格式为:docker rm [OPTIONS] CONTAINER [CONTAINER...]主要选项:-f, --force :是否强行终止并删除一个运行的容器; -l, --link:删除容器的连接,但保留容器; -v, --volumes:删除容器挂载的数据卷例如:$ docker ps -aCONTAINER ID ...
2018-10-27 14:40:47 2061
原创 4.3-进入容器
在使用 -d 参数时,容器启动后会进入后台。 某些时候需要进入容器进行操作,有很多种方法,包括使用 docker attach 命令、docker exec 命令或 nsenter 工具等。1. attach 命令格式为docker attach [OPTIONS] CONTAINER主要选项:--detach-keys string :指定退出attach模式的快捷...
2018-10-27 14:32:30 327
原创 4.2-终止容器
可以使用 docker stop 来终止一个运行中的容器。此外,当Docker容器中指定的应用终结时,容器也自动终止。 进入一个终端的容器后,用户通过 exit 命令或 Ctrl+d 来退出终端时,所创建的容器立刻终止,处于exited状态。终止状态的容器可以用 docker ps -a 命令看到。例如:docker ps -a CONTAINER ID ...
2018-10-27 14:04:41 291
原创 Docker 容器-4.1创建容器
1.新建容器可以使用 docker create 命令新建一个容器,例如:$ docker create -it ubuntu:latest$ docke ps -a使用docker create 创建的容器属于停止状态。可以使用docker start 命令来启动。 create命令和run命令支持的选项比较多,这里不多介绍。2.启动容器使用 docker start...
2018-10-27 13:53:52 497
原创 3-3.8 Dockerfile 指令详解之二
上一篇文章介绍了Dockerfile指令详解之一,包括:FROM 指定基础镜像RUN 执行命令COPY 复制文件ADD 更高级的复制文件CMD 容器启动命令ENTRYPOINT 入口点ENV 设置环境变量目录1. ARG 构建参数2. VOLUME 定义匿名卷3. EXPOSE 声明端口4. WORKDIR 指定工作目录5. USER 指定当前用...
2018-10-27 12:09:11 427
原创 3-3.8 Dockerfile 指令详解之一
Dockerfile提供了一种模板文件形式来创建docker镜像的方式,有其特有的指令,本篇详解其用法。目录FROM 指定基础镜像RUN 执行命令COPY 复制文件ADD 更高级的复制文件CMD 容器启动命令ENTRYPOINT 入口点ENV 设置环境变量FROM 指定基础镜像所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。而FROM 就是指定基础...
2018-10-27 11:09:26 540
原创 问题解决:pvcreate过程中错误Device /dev/sdb not found (or ignored by filtering)
在pvcreate创建物理卷时出错:Device /dev/sdb not found.我的报错情况没有(or ignored by filtering),原因说明:显然,在/dev/目录下应该是要存在一个硬盘分区的,即/dev/sdb。接下来我分两种情况来说明这个问题。解决:第一种情况:①先列出硬盘分区:[root@centos7 ~]# fdisk -lDisk /d...
2018-09-30 11:26:37 30729
原创 3-3.7 上传docker镜像
上传镜像使用docker push镜像到仓库,默认上传到DockerHub官方仓库,需要账号密码,命令格式:docker push [OPTIONS] NAME[:TAG]例如上传docker.io/busybox:latest 镜像。1 首先准备一个hub 的帐号, 去 https://hub.docker.com 注册2 在hub那里新建一个仓库, 这个就类似于githu...
2018-09-24 19:11:08 293
原创 3-3.6 存出和载入docker镜像
使用 docker save 和 docker load 命令存出和载入镜像。存出镜像 将镜像存出到本地文件,使用docker save 。例如将busybox:latest镜像存出为文件bbox_latest.tar文件:# docker imagesREPOSITORY TAG ...
2018-09-24 18:31:44 252
原创 3-3.5.1 docker build 用法
在包含Dockerfile 文件的目录下执行:docker build -t nginx:v3 .即是创建了镜像。docker build 命令进行镜像构建。其格式为:docker build [选项] <上下文路径/URL/->镜像构建上下文(Context)如果注意,会看到 docker build 命令最后有一个 . 。 . 表示当前目录...
2018-09-14 10:47:06 4062 6
原创 3-3.5 创建镜像
创建镜像的三种方式:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建。第三种基于Dockerfile创建镜像的方式会在后续章节深入讲解 1.使用commit 方式创建 思路:先获取一个镜像,进入容器中对容器进行修改,之后提交该容器,生成一个新镜像。 镜像是多层存储,每一层是在前一层的基础上进行的修改;而容器同样也是多层存储,是在以镜像为基础层,在...
2018-09-14 10:13:40 286
原创 3-3.4 删除镜像
rmi命令用于删除镜像。若不指定标签,则删除latest标签docker rmi [选项] <注册名称>/<镜像名称,id>:<标签>选项:-f、--force=false 强制删除镜像--no-prune=false 不删除不带标签的父级镜像1. 使用镜像标签删除镜像$ docker rmi hello-world$ docke...
2018-09-06 12:23:08 645
原创 3-3.3 查找镜像
search命令用与在docker hub 中搜索镜像 docker search <选项><搜索词>选项:--automated=false 只显示由docker hub 的automated build 创建的镜像--no-trunc=false 显示所有因为内容过长而省略的部分-s、--stars=0 显示评价为特定星级以上的镜像例如搜索 mysq...
2018-09-06 11:22:11 376
原创 3-3.2 查看镜像信息
使用 docker images 命令列出本地主机已有的镜像。比如:[root@centos7 ~] docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdocker.io/busybox ...
2018-09-06 11:10:36 1951
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人