k8s学习与命令记录

1,加入子节点token失效后重新获取命令
kubeadm token create
ywwpa6.swe3qalgevohe77f
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
生成如下加密串
987ec492ac6a8ca7de12b96a25f0a1cb1e8acfc411d5105ad04b70bf1eaa981c
下面的ip地址是主机master的ip
kubeadm join 192.168.100.10:6443 --token ywwpa6.swe3qalgevohe77f
–discovery-token-ca-cert-hash sha256:987ec492ac6a8ca7de12b96a25f0a1cb1e8acfc411d5105ad04b70bf1eaa981c
kubeadm token create --print-join-command
在这里插入图片描述

把之前加入节点的命令重新打印一次,可以直接拿来用

2, /var/log/message下的报错
Unable to update cni config: no networks found in /etc/cni/net.d
network plugin is not ready: cni config uninitialized
导致k8s一直是notready状态
解决:在/etc/cni/net.d目录下创建两个文件
vim /etc/cni/net.d/10-flannel.conf
内容为:

{"name":"cbr0","type":"flannel","delegate": {"isDefaultGateway": true}}

vim /etc/cni/net.d/10-flannel.conflist
内容为:

{
  "name": "cbr0",
  "cniVersion": "0.3.1",
  "plugins": [
    {
      "type": "flannel",
      "delegate": {
        "hairpinMode": true,
        "isDefaultGateway": true
      }
    },
    {
      "type": "portmap",
      "capabilities": {
        "portMappings": true
      }
    }
  ]
}

3,查看节点是否准备好
kubectl get node
在这里插入图片描述
4,主节点master初始化
kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.16.4 --pod-network-cidr=10.244.0.0/16

5,创建一个应用程序
kubectl run nginx-dep --image=nginx:1.7.9 --port=80 --replicas=2
解释:–port=80 代表 绑定到这个网段内的每一台机器上
在这里插入图片描述
kubectl get deployment
查看系统中运行了几个机器人
在这里插入图片描述
kubectl get pods
kubectl get pods -o wide 查看详情
查看服务,也就是上面的机器人创建了这两个服务
在这里插入图片描述
在这里插入图片描述
由于是运行的nginx服务,可以通过curl 10.244.2.2来验证服务是否启动成功
这个地址在集群的任何一台机器都可以访问到,不过这个地址只在集群内部有效,外部浏览器是访问不到的

6,查看pod中内部信息
kubectl describe pod nginx-dep-5779c9d6c9-bghnx
在这里插入图片描述
在这里插入图片描述
7,进入到容器内部
kubectl exec -it pod的id值(获取可以通过kubectl get pods命令 )
kubectl exec -it nginx-dep-5779c9d6c9-hn848 /bin/bash
默认进入到第一个容器
如果存在多个容器,进入到指定的容器中命令为
kubectl exec -it nginx-dep-5779c9d6c9-hn848 -c 容器id(id可以在kubectl describe pod nginx-dep-5779c9d6c9-bghnx中看到) /bin/bash

8,删除pod
kubectl delete pod nginx-dep-5779c9d6c9-hn848
kubectl get pods -o wide 验证,发现删不掉,ip换了个

9,弹性伸缩,给机器人nginx-dep下指令
kubectl scale --replicas=3 deployment nginx-dep
kubectl get deployment 查看变成了3
kubectl get pods -o wide 查看变成了3

10,在线升级版本,甚至说可以直接把nginx镜像改成tomcat镜像
kubectl set image deployment nginx-dep nginx-dep=nginx:1.9.7
查看镜像版本
kubectl get pods -o wide 查询pod的id
kubectl describe pod nginx-dep-5779c9d6c9-l9tpj

11,回滚 回滚回来ip还是会再变化一次,并不是真的回滚(把原来的杀了,重新创建的之前的)
kubectl rollout undo deployment nginx-dep
kubectl get pods -o wide

12,创建service ,pod中的ip不管怎么变,service的ip就一个,不会变化
kubectl expose deployment nginx-dep --name=nginx-svc --port=81 --target-port=80
kubectl get service 查看所有service信息(master中才能用这个命令)
查看详细 kubectl get service -o wide
在这里插入图片描述
访问curl 10.97.0.150:81 进行测试
Type为ClusterIP的只能内网访问
kubectl expose deployment nginx-dep --name=nginx-svc2 --port=81 --target-port=80 --type=NodePort
在这里插入图片描述
这样通过添加–type=NodePort 可以把端口暴露到外部, 就可以在外面使用浏览器访问 宿主机ip(集群中的每一台机器都一视同仁):31842了,本例中就是 192.168.100.10:31842,192.168.100.11:31842,192.168.100.12:31842都可以访问到

13,k8s组件理解
pod就是给容器配置一个运行的环境,k8s是通过调度pod来调用到具体容器的
kubelet 对应serlvlet
Kube-proxy service层面,对一个集群进行负载
controller 监听pod服务的机器人
service 稳定服务的ip,服务的发现过程
api 接收命令,人机交互

数据卷放在网络上,有第三方的网络存储服务

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值