主要记录最近遇到的一些开发问题,解决方法。
1. Ingress 开启 HTTPS
准备好证书,domain.com.crt、domain.com.key
- 创建 Secret
1
| kubectl create secret tls {SECRET_NAME} --key domain.com.key --cert domain.com.crt -n {NAMESPACE}
|
- 更新 Ingress 配置
1
2
3
4
5
| spec:
tls:
- hosts:
- domain.com
secretName: {SECRET_NAME}
|
2. SSH 登陆失败,提示 ssh-dss
SSH 登陆提示:
1
| Unable to negotiate with 10.10.10.10 port 22: no matching host key type found. Their offer: ssh-dss
|
原因是,OpenSSH 7.0 以后的版本,出于安全性考虑,不再支持 ssh-dss (DSA)算法。
执行命令,查看 OpenSSH 版本:
解决办法,有两个:
1,命令行添加参数
1
| ssh -oHostKeyAlgorithms=+ssh-dss login_user@host_ip
|
2,配置文件中增加参数
cat ~/.ssh/config
Host ssh_name
HostName host_ip
HostKeyAlgorithms +ssh-dss
User login_user
Port 22
3. 强制删除 Kubernetes 资源
1
| kubectl delete --force --grace-period=0 {RESOURCE_NAME}
|
通常无法删除,是因为有些 finalizer 关联的动作未执行成功。如果一定要删除,可以试试下面的命令:
1
| kubectl get namespace myns -o json | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/"| kubectl replace /api/v1/namespaces/myns/finalize -f -
|
1
| ETCDCTL_API=3 etcdctl --endpoints=https://[127.0.0.1]:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key del --prefix=/registry/namespaces/{NAMESPACENAME}
|
4. 使用 Journalctl 查看日志
Systemd 是 Linux 系统工具,用来启动守护进程。journald 收集由内核、initrd 以及服务等产生的日志信息。
只需要 journalctl
一条命令,就可以查看所有日志。