k8s的基本操作
命名空间
创建命名空间
kubectl create namespace xxx
或者
apiVersion: v1
kind: Namespace
metadata:
name: <insert-namespace-name-here>
kubectl create -f ./my-namespace.yaml
删除命名空间
kubectl delete namespaces xxx
警告: 这会删除名字空间下的 所有内容 !
查询
POD
查询某命名空间下所有的pod
kubectl get pod -n 命名空间
集群情况
kubectl cluster-info
查询configmap
kubectl get configmap coredns -n kube-system
kubectl get configmap coredns -n kube-system -o yaml
describe
kubectl describe pod nginx-deployment-559d658b74-6czzf -n test
endpoints
kubectl get endpoints -n test
svc
kubectl get svc -n test
删除
delete
kubectl delete all -l app=my-app
创建
APPLY
kubectl apply -f xxx.yaml
CREATE
kubectl create deployment xxx --image=xxx -n=xxx
REPLACE
kubectl replace deployment xxx --image=xxx -n=xxx
两者区别
1)kubectl create命令,是先删除所有现有的东西,重新根据yaml文件生成新的。所以要求yaml文件中的配置必须是完整的
(2)kubectl create命令,用同一个yaml文件执行替换replace命令,将会不成功,fail掉。
kubectl create命令可创建新资源。 因此,如果再次运行该命令,则会抛出错误,因为资源名称在名称空间中应该是唯一的。
kubectl apply命令将配置应用于资源。 如果资源不在那里,那么它将被创建。 kubectl apply命令可以第二次运行,因为它只是应用如下所示的配置。 在这种情况下,配置没有改变。 所以,pod没有改变。
在kubectl create ,我们指定一个特定的动作,在这种情况下create ,因此它是必要的 。
在kubectl apply命令中,我们指定系统的目标状态,并且不指定特定操作,因此声明性 。 我们让系统决定采取什么行动。 如果资源不在那里,它将创建它,如果资源在那里,那么它将配置应用于现有资源
简单来说,如果在单个文件上运行操作以创建资源,则create和apply基本相同。 但是, apply允许您在目录下的多个文件上同时创建和修补。
go环境搭建
环境变量
- k8s中是获取镜像文件来作为编排,但是我们有很多数据库等相关信息不能直接写在镜像里面,这个时候我们就可以通过k8s的yaml文件进行编排容器的时候设置环境变量
- go可以通过导入”os”包通过os包中的Getenv方法来获取
package main
import "fmt"
import "os"
func main(){
var JAVAHOME string
JAVAHOME = os.Getenv("JAVA_HOME")
fmt.Println(JAVAHOME)
}