所以我在 VirtualBox 虚拟机中运行 CoreOS。
过去,我运行过与容器共享主机 X11 套接字的 docker 映像,例如运行 firefox GUI 应用程序。
这可以在我的 CoreOS VM 中执行吗?
由于未知原因,工作节点意外地被主节点从集群中删除。
该集群具有以下设置:
发生了来源不明的事件,在几秒钟内,所有工作节点都从主节点上断开。我们能找到的唯一相关日志条目是kube-controller-manager:
I0217 14:19:11.432691 1 event.go:217] Event(api.ObjectReference{Kind:"Node", Namespace:"", Name:"ip-XX-XX-XX-XX.ec2.internal", UID:"XXX", APIVersion:"", ResourceVersion:"", FieldPath:""}): type: 'Normal' reason: 'NodeNotReady' Node ip-XX-XX-XX-XX.ec2.internal status is now: NodeNotReady
Run Code Online (Sandbox Code Playgroud)
大约 10 分钟后,节点恢复“就绪”状态。
我们尚未找到节点转变为 的原因NodeNotReady。
到目前为止,我们已经查看了各种系统组件的日志,包括:
一个潜在的值得注意的事项是,集群的活动主节点当前驻留在与节点不同的可用区中。这应该没问题,但可能是网络连接问题的根源。话虽如此,我们在日志/监控中没有看到可用区间连接问题的迹象。
检查 kubelet 日志,没有明确的日志记录事件表明节点将其状态更改为“未就绪或其他”。此外,也没有明确指示任何致命事件。
值得注意的一项是,所有 kubelet 在中断后都会记录:
Error updating node status, will retry: error getting node "ip-XX-XX-XX-XX.ec2.internal": Get https://master/api/v1/nodes?fieldSelector=metadata.name%3Dip-XX-XX-XX-XX.ec2.internal&resourceVersion=0: read tcp 10.X.X.X:52534->10.Y.Y.Y:443: read: no route to host".
Run Code Online (Sandbox Code Playgroud)
再次请注意,这些日志消息是在节点重新加入集群后记录的(集群崩溃和节点重新加入之间有一个清晰的约 10 分钟的窗口)。
我的应用程序在 Docker 中运行核心操作系统和 Ubuntu。如何从这些系统收集线程转储来分析性能问题
我已经尝试过以下命令但它不起作用:
kill -3
jstack
docker exec
appsnap
Run Code Online (Sandbox Code Playgroud) 我遇到的问题与其他现有帖子非常相似,除了它们都有相同的解决方案,因此我创建了一个新线程。
问题: 安装Flannel后,Master节点仍处于“NotReady”状态。
预期结果: 安装 Flannel 后主节点变为“Ready”。
背景:我在安装 Flannel 时 遵循本指南
我担心的是,我默认使用 Kubelet v1.17.2,就像上个月一样(有人能确认 v1.17.2 是否适用于 Flannel 吗?”
以下是在主节点上运行命令后的输出:kubectl描述节点machias
Name: machias
Roles: master
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=machias
kubernetes.io/os=linux
node-role.kubernetes.io/master=
Annotations: flannel.alpha.coreos.com/backend-data: {"VtepMAC":"be:78:65:7f:ae:6d"}
flannel.alpha.coreos.com/backend-type: vxlan
flannel.alpha.coreos.com/kube-subnet-manager: true
flannel.alpha.coreos.com/public-ip: 192.168.122.172
kubeadm.alpha.kubernetes.io/cri-socket: /var/run/dockershim.sock
node.alpha.kubernetes.io/ttl: 0
volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp: Sat, 15 Feb 2020 01:00:01 -0500
Taints: node.kubernetes.io/not-ready:NoExecute
node-role.kubernetes.io/master:NoSchedule
node.kubernetes.io/not-ready:NoSchedule
Unschedulable: false
Lease:
HolderIdentity: machias
AcquireTime: <unset>
RenewTime: Sat, 15 Feb 2020 13:54:56 -0500
Conditions:
Type Status LastHeartbeatTime LastTransitionTime Reason …Run Code Online (Sandbox Code Playgroud) 我尝试使用Docker和bash脚本(我使用Coreos)设置PostgreSQL从站。我尚未找到任何有效的方法.pgpass。
我知道我可以创建PGPASSWORD环境变量,但是出于安全原因(如此处所述,http://www.postgresql.org/docs/current/static/libpq-envars.html),我不希望这样做,并且因为每次使用recovery.conf文件时(对于primary_conninfo变量),都应该可以访问此密码。
Docker文件
# ...
# apt-get installs and other config
# ...
USER postgres
# Create role and db
RUN /etc/init.d/postgresql start &&\
psql --command "CREATE USER replicator WITH ENCRYPTED PASSWORD 'THEPASSWORD';" &&\
psql --command "CREATE DATABASE db WITH OWNER replicator;"
# Set the pg_pass to allow connection to master
ADD ./pgpass.conf /home/postgres/.pgpass # pgpass.conf comes my root git folder
USER root
RUN chmod 0600 /home/postgres/.pgpass
Run Code Online (Sandbox Code Playgroud)
在我的bash文件中
# ...
pg_basebackup -h host.of.master.ip -D /var/pgbackup/backup_data -U …Run Code Online (Sandbox Code Playgroud) 我需要某种在CoreOS集群上运行的分布式文件系统.
因此,我想在CoreOS节点上运行HDFS.这可能吗?
我可以看到两个选项;
选项2似乎是最好的方法,但是,有一些潜在的阻碍者;
干杯.
我已经使用VMware映像部署了CoreOS standealone服务器,请按照本指南体验CoreOS.
部署成功后,我发现我的CoreOS只启用了Docker服务,没有运行etcd和fleet服务.虽然我知道如何使用systemd手动运行etcd和fleet服务.而且我也知道使用合适的cloud-config可以安装CoreOS,其中etcd和fleet服务自动启动.
但我想知道:
/etc/systemd/system以使systemd自动启动etcd服务?谢谢
我正在考虑在CoreOS集群之上部署Kubernetes,但我认为我遇到了各种各样的交易破坏者.
如果我只使用CoreOS和fleet,我可以在单元文件中指定我希望某些服务不能在与其他服务相同的物理机器上运行(反亲和力).这对于高可用性至关重要.但它看起来并不像kubernetes有这个功能.
在我的特定用例中,我将需要运行一些需要始终可用的弹性搜索机器集群.如果出于任何原因,kubernetes决定在一台机器上安排给定ES集群的所有弹性搜索节点容器(或者甚至是一台机器上的大多数),并且该机器死机,那么我的elasticsearch集群将随之死亡.这是不允许发生的.
似乎可能有解决方法.我可以设置资源需求和机器规格,这样每台机器上只能安装一个弹性搜索实例.或者我可能以某种方式使用标签来指定某些弹性搜索容器应该在某些机器上运行.我还可以提供比必要更多的机器,以及比必要的更多ES节点,并假设kubernetes将它们分散到足以合理确定高可用性.
但所有这一切似乎都很尴尬.从资源管理的角度来看,只需指定所需的硬件和反关联性,就可以让调度程序从那里进行优化.
那么Kubernetes是否以某种我无法找到的方式支持反亲和力?或者有人知道它是否会很快?
或者我应该考虑另一种方式?我是否必须编写自己的调度程序?
我需要删除一些具有相同评论的规则。
例如,我有带有 comment = "test it" 的规则,所以我可以像这样获得它们的列表:
sudo iptables -t nat -L | grep 'test it'
Run Code Online (Sandbox Code Playgroud)
但是如何删除所有带有注释“test it”的 PREROUTING 规则?
UPD: 正如@hek2mgl 所说,我可以这样做:
sudo bash -c "iptables-save > iptables.backup"
sed -i '/PREROUTING.*--comment.* "test it"/d' iptables.backup
sudo iptables-restore < iptables.backup
sudo rm iptables.backup
Run Code Online (Sandbox Code Playgroud)
但是save和restore之间可能是iptables的变化,所以restore之后会有问题=/
我想用Python编写Docker容器管理脚本.但是,由于我使用CoreOS,因此不包含Python作为标准命令.所以,我正在考虑使用Python Docker容器(https://registry.hub.docker.com/_/python/)来执行我的脚本.但是,在这种情况下,脚本将在容器的VM中执行,该VM无法访问主机的Docker CLI.
有没有办法使用Python(或其他未编译在CoreOS中的编程语言)来管理主机环境而无需在主机上安装它?
PS,脚本将执行以下操作:
docker run/rm/stop <another container>;
coreos ×10
docker ×6
kubernetes ×3
containers ×1
etcd ×1
firewall ×1
flannel ×1
hadoop ×1
hdfs ×1
iptables ×1
kubeadm ×1
linux ×1
postgresql ×1
python ×1
systemd ×1
ubuntu ×1
virtualbox ×1