我在文档中理解的是kubectl apply = kubectl create + kubectl replace.参考
我的理解是
如果我想在集群中创建新的k8s资源,我应该使用kubectl创建操作.现在,如果我想更新现场k8s资源中的内容,我应该使用kubectl替换操作.
如果我想做两个操作(创建一个新的k8s资源以及更新实时k8s资源)那么我应该使用kubectl应用操作
我的问题是为什么在集群中执行相同任务有三个操作?这些操作的用例是什么?他们如何在引擎盖下相互区别?
目前我正在使用kubectl create操作在集群中创建新资源.谢谢
我已经用命令启动了pods
$ kubectl run busybox --image=busybox --restart=Never --tty -i --generator=run-pod/v1
Run Code Online (Sandbox Code Playgroud)
出了点问题,现在我无法删除这个pod我尝试使用下面的方法,但它不断重建自己
$ kubectl delete pods busybox-na3tm
pod "busybox-na3tm" deleted
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox-vlzh3 0/1 ContainerCreating 0 14s
$ kubectl delete pod busybox-vlzh3 --grace-period=0
$ kubectl delete pods --all
pod "busybox-131cq" deleted
pod "busybox-136x9" deleted
pod "busybox-13f8a" deleted
pod "busybox-13svg" deleted
pod "busybox-1465m" deleted
pod "busybox-14uz1" deleted
pod "busybox-15raj" deleted
pod "busybox-160to" deleted
pod "busybox-16191" deleted
$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS …Run Code Online (Sandbox Code Playgroud) kubectl logs <pod-id>
Run Code Online (Sandbox Code Playgroud)
从我的部署中获取最新日志 - 我正在处理一个错误并且有兴趣在运行时知道日志 - 如何获得连续的日志流?
编辑:最后纠正的问题.
我有一个test-1495806908-xn5jn带2个容器的吊舱.我想重新启动其中一个叫container-test.是否可以重新启动pod中的单个容器以及如何?如果没有,我该如何重启pod?
pod是使用deployment.yaml创建的:
kubectl create -f deployment.yaml
Run Code Online (Sandbox Code Playgroud) 我的 Ingress 使用了以下 YAML,它工作正常(并继续工作):
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
namespace: test-layer
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: mylocalhost.com
http:
paths:
- path: /
backend:
serviceName: test-app
servicePort: 5000
Run Code Online (Sandbox Code Playgroud)
但是,它告诉我它已被弃用,我应该改为使用networking.k8s.io/v1. 当我这样做(见下文)时,它会引发错误。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test-ingress
namespace: test-layer
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: mylocalhost.com
http:
paths:
- path: /
backend:
serviceName: test-app
servicePort: 5000
Run Code Online (Sandbox Code Playgroud)
错误
error: error validating "test-ingress.yaml":
error validating data: [ValidationError(Ingress.spec.rules[0].http.paths[0].backend):
unknown field "serviceName" in io.k8s.api.networking.v1.IngressBackend,
ValidationError(Ingress.spec.rules[0].http.paths[0].backend):
unknown field "servicePort" …Run Code Online (Sandbox Code Playgroud) kubectl配置视图显示与已删除的集群对应的上下文和集群.
我该如何删除这些条目?
命令
kubectl config unset clusters
Run Code Online (Sandbox Code Playgroud)
似乎删除所有群集.有没有办法有选择地删除群集条目?上下文怎么样?
我用秘密创造了一个秘密kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt.
如果我想更新值 - 我该怎么做?
我在AWS上使用kops创建了一个Kubernetes集群,并且可以通过kubectl本地计算机成功管理它.
我可以查看当前配置kubectl config view以及直接访问存储状态~/.kube/config,例如:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: REDACTED
server: https://api.{CLUSTER_NAME}
name: {CLUSTER_NAME}
contexts:
- context:
cluster: {CLUSTER_NAME}
user: {CLUSTER_NAME}
name: {CLUSTER_NAME}
current-context: {CLUSTER_NAME}
kind: Config
preferences: {}
users:
- name: {CLUSTER_NAME}
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
password: REDACTED
username: admin
- name: {CLUSTER_NAME}-basic-auth
user:
password: REDACTED
username: admin
Run Code Online (Sandbox Code Playgroud)
我需要让其他用户也能管理.本用户指南介绍了如何在其他用户计算机上定义这些用户指南,但未描述如何在群集本身内实际创建用户凭据.你怎么做到这一点?
另外,分享是否安全cluster.certificate-authority-data?
假设我想找到我的k8s主人的kubelet和apiserver版本,最好的方法是什么?
我知道以下命令:
kubectl cluster-info
Run Code Online (Sandbox Code Playgroud)
它只显示端点.
kubectl get nodes; kubectl describe node <node>;
Run Code Online (Sandbox Code Playgroud)
它显示非常详细的信息,但只显示节点而不是主节点.
还有
kubectl version
Run Code Online (Sandbox Code Playgroud)
但这只显示kubectl版本而不是kubelet或apiserver版本.
我可以使用哪些其他命令来识别群集的属性?
我正在关注该教程(https://www.baeldung.com/spring-boot-minikube),我想在yaml文件(simple-crud-dpl.yaml)中创建Kubernetes部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: simple-crud
spec:
selector:
matchLabels:
app: simple-crud
replicas: 3
template:
metadata:
labels:
app: simple-crud
spec:
containers:
- name: simple-crud
image: simple-crud:latest
imagePullPolicy: Never
ports:
- containerPort: 8080
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时kubectl create -f simple-crud-dpl.yaml我得到了:
error: SchemaError(io.k8s.api.autoscaling.v2beta2.MetricTarget): invalid object doesn't have additional properties
我正在使用kubectl的最新版本:
kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.11", GitCommit:"637c7e288581ee40ab4ca210618a89a555b6e7e9", GitTreeState:"clean", BuildDate:"2018-11-26T14:38:32Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:45:25Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
Run Code Online (Sandbox Code Playgroud)
我也在本地使用minikube,如教程中所述。一切正常,直到部署和服务。我做不到。