我正在尝试使用certbot/certbot
kubernetes中的docker容器生成SSL证书.我正在使用Job
控制器,这看起来是最合适的选择.当我运行独立选项时,我收到以下错误:
授权程序失败.staging.ishankhare.com(http-01):urn:ietf:params:acme:error:connection ::服务器无法连接到客户端以验证域名::获取 http://staging.ishankhare.com/.众所周知/ acme-challenge/tpumqbcDWudT7EBsgC7IvtSzZvMAuooQ3PmSPh9yng8:连接超时(可能是防火墙问题)
我已经确保这不是由于运行简单的nginx容器而错误配置的DNS条目,并且它正确解析.以下是我的Jobs
档案:
apiVersion: batch/v1
kind: Job
metadata:
#labels:
# app: certbot-generator
name: certbot
spec:
template:
metadata:
labels:
app: certbot-generate
spec:
volumes:
- name: certs
containers:
- name: certbot
image: certbot/certbot
command: ["certbot"]
#command: ["yes"]
args: ["certonly", "--noninteractive", "--agree-tos", "--staging", "--standalone", "-d", "staging.ishankhare.com", "-m", "me@ishankhare.com"]
volumeMounts:
- name: certs
mountPath: "/etc/letsencrypt/"
#- name: certs
#mountPath: "/opt/"
ports:
- containerPort: 80
- containerPort: 443
restartPolicy: "OnFailure"
Run Code Online (Sandbox Code Playgroud)
和我的服务:
apiVersion: v1
kind: …
Run Code Online (Sandbox Code Playgroud) 我正在使用kubectl和--dry-run遇到奇怪的行为。
为简化起见,假设我具有以下yaml文件:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
run: nginx
name: nginx
spec:
replicas: 3
selector:
matchLabels:
run: nginx
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
run: nginx
spec:
containers:
- image: nginxsdf
imagePullPolicy: Always
name: nginx
Run Code Online (Sandbox Code Playgroud)
修改例如图像或副本数:
kubectl apply -f Deployment.yaml -o yaml --dry-run
向我输出具有OLD规范的资源
kubectl apply -f Deployment.yaml -o yaml
向我输出具有新规范的资源
根据文档:
--dry-run = false:如果为true,则仅打印将要发送的对象,而不发送它。
但是,打印的对象是旧对象,而不是将被发送到ApiServer的对象。
在minikube,gke v1.10.0上测试
同时,我为此打开了一个新的gitHub问题:
我需要从远程位置运行一个 android 项目到 Appetize.io 模拟器。模拟器提供了一个 ssh 命令来执行此操作。每次我尝试连接时,它都会输出以下错误:
通过 SSH 连接的 Appetize 命令
sudo ssh -vv -fN -o StrictHostKeyChecking=no -p 2205 PUBLIC_KEY@useast-android-10.appetize.io -L6000:localhost:5609 && adb connect localhost:6000
Run Code Online (Sandbox Code Playgroud)
错误
通道 2:打开失败:管理禁止:
通道 2: free: direct-tcpip: 监听 localhost 端口 5609 的 6000 端口,从 127.0.0.1 端口 49057 连接到 127.0.0.1 端口 6000,nchannels 3
结果
该命令成功建立连接,进行身份验证,“将 '[useeast-android-9.appetize.io]:2208,[209.222.0.20]:2208' (RSA) 添加到已知主机列表中”,但是当我尝试运行adb connect localhost:6000
失败。
该命令有时会起作用,所以我知道在某些我仍然不知道的条件下,它设法建立连接并连接到模拟器,但大多数情况下它不起作用。
我尝试了以下方法:
在运行命令之前停止并重新启动 ADB
adb kill-server && adb start-server
将以下内容添加到 /etc/ssh/sshd_config文件中
MaxSessions 100
AllowTcpForwarding yes …
Run Code Online (Sandbox Code Playgroud) 我已经在 Kubernetes 集群中部署了 MySql 和 PhpMyAdmin。我想用用户名和密码登录PMA并连接到Mysql。我有点卡住了。我有 PMA 的外部 IP,它应该连接到我的数据库。这是我的部署脚本:
对于 mysql:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
creationTimestamp: null
labels:
name: mysqldb
name: mysqldb
spec:
replicas: 1
strategy:
type: Recreate
template:
metadata:
creationTimestamp: null
labels:
name: mysqldb
spec:
containers:
- env:
- name: DB_NAME
value: metrics
- name: DB_USER
value: metrics
- name: DB_PASS
value: ****
image: mysql:5.7
name: mysqldb
ports:
- containerPort: 3306
resources: {}
volumeMounts:
- mountPath: /var/lib/mysql
name: data-volume
subPath: data
restartPolicy: Always
volumes:
- name: data-volume
persistentVolumeClaim: …
Run Code Online (Sandbox Code Playgroud) php phpmyadmin kubernetes google-kubernetes-engine docker-compose
我已经在 GKE 中部署了一个 mongo db、Spring Boot BE、Angular 应用程序。我的 FE 服务是一个负载均衡器,它需要与我的 BE 连接以获取数据,但我的浏览器出现控制台错误:GET http://contactbe.default.svc.cluster.local/contacts net::ERR_NAME_NOT_RESOLVED . 我的 FE 需要使用/contacts端点来获取数据。我在我的 Angular 应用程序中使用来自我的 BE 服务 (contactbe.default.svc.cluster.local) 的 DNS。这是我用来创建部署的 yml 文件:
apiVersion: v1
kind: Service
metadata:
name: mongo
labels:
run: mongo
spec:
type: NodePort
ports:
- port: 27017
targetPort: 27017
protocol: TCP
selector:
run: mongo
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: mongo
spec:
template:
metadata:
labels:
run: mongo
spec:
containers:
- name: mongo
image: mongo
ports:
- containerPort: 27017
--- …
Run Code Online (Sandbox Code Playgroud) spring-boot kubernetes google-kubernetes-engine kube-dns angular
Kubernetes OpenAPI 规范在这里托管。
https://github.com/kubernetes/kubernetes/tree/master/api/openapi-spec
Run Code Online (Sandbox Code Playgroud)
此外,此处提供了 Kubernetes 的各种客户端 API:
https://kubernetes.io/docs/reference/using-api/client-libraries/
Run Code Online (Sandbox Code Playgroud)
使用 OpenAPI 规范,我能够生成提供 REST 服务的服务器代码。但是,使用这些 K8s 客户端 API(以 Go、Java 等任一语言编写)的应用程序不直接使用这些 REST API。
我的目标是模拟 K8s 服务器以用于测试自动化并构建一个受控环境来创建各种测试场景。
是否有任何现成的 Kubernetes 模拟可用?如果没有,我们如何将客户端 API 与上述 OpenAPI 生成的 REST 服务器接口?这样,应用程序将继续使用客户端 API,但在内部,它们将与模拟的 K8s 服务器而不是真正的服务器进行通信。
请帮助选择选项。
.
当我尝试通过kubernetes部署运行我的elasticsearch容器时,我的elasticsearch pod会在一段时间后失败,而当使用docker-compose或Dockerfile作为docker容器直接运行时,它的运行情况会很好。这是我从中得到的结果kubectl get pods
NAME READY STATUS RESTARTS AGE
es-764bd45bb6-w4ckn 0/1 Error 4 3m
Run Code Online (Sandbox Code Playgroud)
以下是结果 kubectl describe pod
Name: es-764bd45bb6-w4ckn
Namespace: default
Node: administrator-thinkpad-l480/<node_ip>
Start Time: Thu, 30 Aug 2018 16:38:08 +0530
Labels: io.kompose.service=es
pod-template-hash=3206801662
Annotations: <none>
Status: Running
IP: 10.32.0.8
Controlled By: ReplicaSet/es-764bd45bb6
Containers:
es:
Container ID: docker://9be2f7d6eb5d7793908852423716152b8cefa22ee2bb06fbbe69faee6f6aa3c3
Image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4
Image ID: docker-pullable://docker.elastic.co/elasticsearch/elasticsearch@sha256:9ae20c753f18e27d1dd167b8675ba95de20b1f1ae5999aae5077fa2daf38919e
Port: 9200/TCP
State: Waiting
Reason: CrashLoopBackOff
Last State: Terminated
Reason: Error
Exit Code: 78
Started: Thu, 30 Aug 2018 16:42:56 +0530
Finished: Thu, 30 Aug …
Run Code Online (Sandbox Code Playgroud) kubernetes ×6
docker ×2
amazon-ec2 ×1
angular ×1
certbot ×1
kube-dns ×1
kubectl ×1
lets-encrypt ×1
linux ×1
minikube ×1
mocking ×1
php ×1
phpmyadmin ×1
spring-boot ×1
ssh ×1