我在文档中理解的是kubectl apply = kubectl create + kubectl replace.参考
我的理解是
如果我想在集群中创建新的k8s资源,我应该使用kubectl创建操作.现在,如果我想更新现场k8s资源中的内容,我应该使用kubectl替换操作.
如果我想做两个操作(创建一个新的k8s资源以及更新实时k8s资源)那么我应该使用kubectl应用操作
我的问题是为什么在集群中执行相同任务有三个操作?这些操作的用例是什么?他们如何在引擎盖下相互区别?
目前我正在使用kubectl create操作在集群中创建新资源.谢谢
据我所知,Kubernetes控制器的目的是确保当前状态等于所需状态.尽管如此,Kubernetes运营商也做了同样的工作.
控制平面中的控制器列表:
从谷歌搜索,我发现有K8s运营商,如
但是,我无法理解为什么使用Controller无法完成?
运营商是否补充了控制器?
这两个设计作为目的和功能之间的区别是什么.
在控制器和操作员之间进行选择需要注意哪些事项??
通过使用kubectl exec -ti POD_NAME bash我能够访问容器内的终端并执行命令.
我可以理解上述命令的可用性和方便性.作为K8s运营商,我经常使用exec.
但是,用例是kubectl attach POD_NAME什么?
怎么用呢?它的真正目的是什么?在什么情况或情况下它可以使用?
无法启动kubernetes API,因此无法启动kube服务,例如:kubectl版本kubect get节点
/home/ubuntu# kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:53:57Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or port ?
Run Code Online (Sandbox Code Playgroud)
Docker 已安装。使用以下命令安装 kube 组件:
apt-get update && apt-get install -y kubeadm kubelet kubectl
Run Code Online (Sandbox Code Playgroud)
但是,执行时kubeadm init --apiserver-advertise-address=$myip --ignore-preflight-errors=all:
I0408 09:09:07.316109 1 client.go:352] scheme "" not registered, fallback to default scheme
I0408 09:09:07.319904 1 asm_amd64.s:1337] ccResolverWrapper: sending new addresses to cc: [{127.0.0.1:2379 0 <nil>}] …Run Code Online (Sandbox Code Playgroud) 我在AWS中使用EKS(Kubernetes),并且在将大约400千字节的有效负载发布到该Kubernetes容器中运行的任何Web服务器时遇到问题。我遇到了某种限制,但不是大小限制,似乎很多时候都可以达到约400 KB,但有时却可以(使用Python请求进行测试)
requests.exceptions.ChunkedEncodingError: ("Connection broken: ConnectionResetError(104, 'Connection reset by peer')", ConnectionResetError(104, 'Connection reset by peer'))
Run Code Online (Sandbox Code Playgroud)
我用不同的容器(Alpine上的python Web服务器,CentOS上的Tomcat服务器,nginx等)进行了测试。
我将大小增加到400 Kbytes以上,得到的结果越一致:通过对等方重置连接。
有任何想法吗?
我有一个使用以下rake jobs:work命令的部署对象:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: staging-delayed-job-deployment
namespace: staging
spec:
template:
metadata:
labels:
env: staging
name: delayed-job
spec:
containers:
- name: job
image: gcr.io/ej-gc-dev/redacted:<%= ENV['IMAGE_TAG'] %>
command: ["/bin/bash", "-l", "-c"]
args: ["RAILS_ENV=production bundle exec rake jobs:work"]
Run Code Online (Sandbox Code Playgroud)
当我跑步时kubectl logs我什么都没得到.如何rake jobs:work显示输出kubectl logs?即如果直接在pod中运行,它会提供如下输出:
[Worker(host:staging-deployment-cc7dc559f-bswvr pid:2381)] Starting job worker
[Worker(host:staging-deployment-cc7dc559f-bswvr pid:2381)] Job UpdateHubspotPersonaJob (id=67) RUNNING
[Worker(host:staging-deployment-cc7dc559f-bswvr pid:2381)] Job UpdateHubspotPersonaJob (id=67) COMPLETED after 0.4903
[Worker(host:staging-deployment-cc7dc559f-bswvr pid:2381)] Job Mailerjack.registration_created_user_welcome (id=68) RUNNING
[Worker(host:staging-deployment-cc7dc559f-bswvr pid:2381)] Job Mailerjack.registration_created_user_welcome (id=68) …Run Code Online (Sandbox Code Playgroud) 我知道oc tag -d python:3.5只会删除 3.5 标签。但是我想使用 oc 命令从同一图像流中删除多个旧标签。
例如图像流 phython:rel-1、phython:rel-2、phython:rel-3。我正在尝试像oc tag -d python:rel-*. 但我最终得到以下错误消息。
*Error from server (NotFound): imagestreamtags.image.openshift.io "rel-*" not found*
Run Code Online (Sandbox Code Playgroud)
我想知道有什么方法可以为标签应用通配符以一次性删除多个旧标签?
NAME CPU(cores) MEMORY(bytes)
apache-757ddfbc75-khhfw 10m 61Mi
Run Code Online (Sandbox Code Playgroud)