k8s

官网地址

https://kubernetes.io/zh-cn/

自动更新证书

https://github.com/yuyicai/update-kube-cert/blob/master/README-zh_CN.md

不错的参考文档

http://blog.ctnrs.com/

常用命令

kubeadm

#启动一个 Kubernetes 主节点,初始化master时使用
kubeadm init 
#启动一个 Kubernetes 工作节点并且将其加入到集群
kubeadm join 
#更新一个 Kubernetes 集群到新版本
kubeadm upgrade 
#如果使用 v1.7.x 或者更低版本的 kubeadm 初始化集群,您需要对集群做一些配置以便使用 kubeadm upgrade 命令
kubeadm config 
#管理 kubeadm join 使用的令牌
kubeadm token 
#还原 kubeadm init 或者 kubeadm join 对主机所做的任何更改
kubeadm reset 

查看证书到期时间

kubeadm certs check-expiration

入门实例

mysql实例创建

首先创建一个Deployment的定义文件 mysql-deploy.yaml

apiVersion: apps/v1 #API版本
kind: Deployment #副本控制器RC,表明资源对于的类型
metadata:
  labels: #标签
    app: mysql
  name: mysql #对象名称,全局唯一
spec: #部分是对Deployment相关属性的定义
  replicas: 1 #预期的副本数量
  selector: #pod选择器,指定选择哪个pod
    matchLabels:
      app: mysql
  template: #pod模板
    metadata:
      labels:
        app: mysql
    spec:
      containers: #定义容器
      - image: mysql:5.7  #根据实际情况填写  mysql:5.7
        name: mysql
        ports:
        - containerPort: 3306 #容器应用监听的端口
        env:                  #注入容器内的环境变量
        - name: MYSQL_ROOT_PASSWORD
          value: "wj123456"

开始创建执行

[root@k8s-master1 yaml]# kubectl apply -f mysql-deploy.yaml
deployment.apps/mysql created

查看刚建好的Deployment

[root@k8s-master1 yaml]# kubectl get deploy
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
mysql   0/1     1            0           27s
如果显示0,那说明 要等会,创建过程需要时间,再次查看就好了
[root@k8s-master1 yaml]# kubectl get deploy
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
mysql   1/1     1            1           69s

查看pod创建情况,创建过程中显示Pending ,创建完成显示Running

[root@k8s-master1 yaml]# kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
mysql-647dbc9bb4-jpdj9   1/1     Running   0          2m17s

最后在创建一个关联的服务service,对外提供服务mysql-svc.yaml

apiVersion: v1 
kind: Service #表明是service
metadata:
  name: mysql #service中的全局唯一名称
spec: #部分是对Deployment相关属性的定义
  ports:
    - port: 3306 #service提供的端口号
  selector: #service对应的pod拥有这里定义的标签。
    app: mysql

开始创建

[root@k8s-master1 yaml]# kubectl apply -f mysql-svc.yaml
service/mysql created

查看

[root@k8s-master1 yaml]# kubectl get svc mysql
NAME    TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
mysql   ClusterIP   10.1.50.152   <none>        3306/TCP   22s

可以看到mysql服务被分配一个值为10.1.50.152的ClusterIP地址上了,其他的pod,就可以通过ClusterIP+端口号来连接和访问它了。

tomcat实例创建

老规矩先创建yaml文件

vim myweb-deploy.yaml

apiVersion: apps/v1 #API版本
kind: Deployment #副本控制器RC,表明资源对于的类型
metadata:
  labels: #标签
    app: myweb
  name: myweb #对象名称,全局唯一
spec: #部分是对Deployment相关属性的定义
  replicas: 2 #预期的副本数量
  selector: #pod选择器,指定选择哪个pod
    matchLabels:
      app: myweb
  template: #pod模板
    metadata:
      labels:
        app: myweb
    spec:
      containers: #定义容器
      - image: tomcat:8.5.3  
        name: myweb
        ports:
        - containerPort: 8080 #容器应用监听的端口,这个端口不对外访问
        env:                  #注入容器内的环境变量
        - name: MYSQL_SERVICE_HOST
          value: 192.168.60.128

创建
[root@k8s-master1 yaml]# kubectl apply -f myweb-deploy.yaml 
deployment.apps/myweb created

查看
[root@k8s-master1 yaml]# kubectl get deploy
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
mysql   1/1     1            1           61m
myweb   1/2     2            1           65s
nginx   1/1     1            1           28h

创建对应的service也就是svc
vim myweb-svc.yaml
apiVersion: v1 
kind: Service #表明是service
metadata:
  name: myweb #service中的全局唯一名称
spec: #部分是对Deployment相关属性的定义
  type: NodePort
  ports:
    - port: 8080 #service提供的端口号,要保持一直
      nodePort: 30002  #这个才是对外提供访问的地址
  selector: #service对应的pod拥有这里定义的标签。
    app: myweb

创建
[root@k8s-master1 yaml]# kubectl create -f myweb-svc.yaml 
service/myweb created

查看
[root@k8s-master1 yaml]# kubectl get svc
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.1.0.1      <none>        443/TCP          41h
mysql        ClusterIP   10.1.50.152   <none>        3306/TCP         65m
myweb        NodePort    10.1.153.11   <none>        8080:30002/TCP   59s
nginx        NodePort    10.1.86.38    <none>        80:31922/TCP     28h

完成,这样就可以通过浏览器访问了

http://192.168.60.128:30002

图片[1]-k8s-秋风落叶

如果无法启动,可能有以下情况:

  • 防火墙设置无法访问30002端口

创新新的命名空间

老规矩先写配置文件
vim wjnamespace-deploy.yaml
apiVersion: v1 #API版本
kind: Namespace
metadata:
  name: wjnamespace

执行创建
[root@k8s-master1 yaml]# kubectl apply -f wjnamespace-deploy.yaml 
namespace/wjnamespace created

新创建一个pod然后加入新的空间
vim wjnamespace-busybox-pod.yaml
apiVersion: v1 
kind: Pod
metadata:
  name: busybox
  namespace: wjnamespace
spec: #部分是对Deployment相关属性的定义
  containers:
  - image: busybox
    command:
      - sleep
      - "3600"
    name: busybox

#执行创建
[root@k8s-master1 yaml]# kubectl apply -f wjnamespace-busybox-pod.yaml 
pod/busybox created

查看新命名空间下的pod
[root@k8s-master1 yaml]# kubectl get pods --namespace=wjnamespace
NAME      READY   STATUS    RESTARTS   AGE
busybox   1/1     Running   0          46s
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容