Kubernetes(K8S)相关资料
< 返回列表时间: 2020-02-26来源:OSCHINA
【围观】麒麟芯片遭打压成绝版,华为亿元投入又砸向了哪里?>>>
一、当前工作目录
1、docker run使用 -w参数
2、kubernetes 可以使用设置环境变量PWD的方式实现
二、运行的用户
1、docker run使用-u参数
2、K8S使用
pod.spec.securityContext. runAsUser pod级别 运行容器进程的uid 默认为在image metadata中指定的用户 可在SecurityContext中设置
containers.securityContext. runAsUser 容器级别
containers: - name: sec-ctx-demo securityContext: runAsUser: 0 # root allowPrivilegeEscalation: false
三、Secret
1、通过文件生成: kubectl create secret generic db-user-pass --from-file=./username.txt --from-file=./password.txt $ kubectl describe secrets/db-user-pass Name: db-user-pass Namespace: default Labels: <none> Annotations: <none> Type: Opaque Data ==== password.txt: 12 bytes username.txt: 5 bytes
2、通过yaml文件生成: 创建一个secret.yaml文件,内容用base64编码 $ echo -n 'admin' | base64 YWRtaW4= $ echo -n '1f2d1e2e67df' | base64 MWYyZDFlMmU2N2Rm yaml文件内容: apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: username: YWRtaW4= password: MWYyZDFlMmU2N2Rm apiVersion: v1 kind: Pod metadata: name: mypod spec: containers: - name: mypod image: redis volumeMounts: - name: foo mountPath: "/etc/foo" readOnly: true volumes: - name: foo secret: secretName: mysecret
四、端口:
1、 Pod中的 container.ports.containerPort : 这里containerPort是容器内部的port
2、 Service 的 ports.port : service暴露在cluster ip上的端口,通过<cluster ip>:port访问服务
3、 Service 的 ports. targetPort: 8080 Pod的外部访问端口,port和nodePort的数据通过这个端口进入到Pod内部,Pod里面的containers的端口映射到这个端口,提供服务
4、S ervice 的 ports. nodePort: 30001 Node节点的端口,<nodeIP>:nodePort 是提供给集群外部客户访问service的入口
5、hostport与nodeport
什么是HostPort?
创建Kubernetes中的工作负载时,你必须在“容器”部分的Kubernetes YAML规范中指定HostPort设置。当您选择HostPort进行映射时,Rancher会在内部执行此操作。指定HostPort后,在部署pod容器的主机上,该端口会暴露给外部访问。在 <host IP>:<HostPort> 上的流量将会被路由到pod容器的专用端口。
什么是NodePort?
而ServiceType中的其中一种类型就是我们下文要说的NodePort,它提供对为工作负载窗口创建的Kubernetes服务的外部访问。
再回过头来看运行Nginx镜像的工作负载。对于此工作负载,我们需要对外暴露私有容器端口80。
要实现这一目的,我们可以为工作负载创建NodePort服务。NodePort服务规范如下所示:
NodePort的优点: 创建NodePort服务将为工作负载pod提供静态的公共端点。因此,即使pod被动态销毁,Kubernetes也可以在集群中的任何位置部署工作负载,而无需更改公共端点。 pod的规模不受集群中节点数量的限制。Nodeport允许将公共访问与pod的数量和位置分离。
https://blog.51cto.com/12462495/2163239?source=dra
五、目录挂载: 一个容器需要从另一个容器中获取数据的目录(多容器共享目录)。 emptyDir的定义如下: template: metadata: labels: app: app-demo tier: frontend spec: volumes: - name: datavol emptyDir: {} containers: - name: tomcat-demo image: tomcat volumeMounts: - mountPath: /mydata-data name: datavol imagePullPolicy: IfNotPresent hostPath的定义如下: volumes: - name: "persistent-storage" hostPath: path: "/data"

附录:
1、 Kubernetes中文社区
2、 k8s中secret解析
3、 Kubernetes编排文件里的各种Port
4、 Kubernetes的一些基本知识
5、 轻松了解K8s
6、 K8s-yaml的使用及命令
热门排行