一条命令解决Kubernetes更改默认的namespace
K8S默认是在default的namespace下,但是很多时候我们是在一个新的namespace下部署应用,每个操作都需要指定namespace,非常不方便。那么有没有办法切换namespce呢?如果可以切换的话,那有没有更简单的办法。
最简单的方式切换namespace,赠送一个方便的脚本
可以将它alias到一个新的命令”kubectl ns”
1 | alias kubectl='_kubectl_custom(){ if [[ "$1" == "project" && "$2" != "" ]]; then ccontext=`kubectl config current-context`; kubectl config set-context $ccontext --namespace=$2; elif [[ "$1" == "projects" && "$2" == "" ]]; then kubectl get ns; elif [[ "$1" == "project" && "$2" == "" ]]; then project=$(kubectl config get-contexts | sed -n "2p" | awk "{print \$5}"); if [[ "$project" == "" ]]; then echo default; else echo $project; fi; else kubectl $*; fi;}; _kubectl_custom' |
验证
1 | [root@localhost k8s]# kubectl project test |
成功切换了namespace,同时对之前的命令没有任何影响。
相关配置具体操作
kubernetes的运行时是通过~/.kube/config文件的配置来设置的
- 查看当前cluster config配置
1
kubectl config view
- 如果没有的话,可以添加cluster配置
1
kubectl config set-cluster kubernetes-cluster --server=https://192.168.1.128:6443
- 新建context运行时
1
kubectl config set-context {{ namespace }} --namespace={{ namespace }} --cluster=kubernetes-cluster --userkubernetes-admin
- 设置当前运行环境这时所有操作默认都会在下操作。
1
kubectl config use-context {{ namespace }}
直接更改当前context的namespace
1 | kubectl config set-context --current --namespace={{ namespace }} |
补充Openshift
openshift就非常方便了,把这些操作都进行了封装,在创建project时也会自动把context加入到kubeconfig的配置中,如果需要切换运行环境,只要执行oc project {{ projectname }}
就好了。
kubernetes也可以使用Ansible进行安装生产集群: kubespray
Kubernetes添加节点前Token忘了怎么办?
1 | [root@iZ2ze436suxv73x9jtiy2vZ helm-demo-master]# openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //' |
或者创建新的token
1 | [root@iZ2ze436suxv73x9jtiy2vZ helm-demo-master]# kubeadm token create --print-join-command |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
评论