检测之前的集群环境是否正常
两条命令
1.kubectl get pods -n kube-system
#检测k8s组件kube-system命名空间下的pod是否正常
在这里插入图片描述

2.kubectl get nodes,pod,svc
#检查node,pod,svc是否正常
在这里插入图片描述
#发现有一个pod启动不正常
查看日志发现是无法启动识别我的机器网卡,修改calico.yaml重新生成pod

 kubectl logs -f  calico-kube-controllers-69496d8b75-wzlbl   -n  kube-system
 2021-03-14 10:28:05.687 [ERROR][1] main.go 254: Failed to reach apiserver error=Get "https://10.96.0.1:443/apis/crd.projectcalico.org/v1/clusterinformations/default": context deadline exceeded
2021-03-14 10:28:25.689 [ERROR][1] client.go 261: Error getting cluster information config ClusterInformation="default" error=Get "https://10.96.0.1:443/apis/crd.projectcalico.org/v1/clusterinformations/default": context deadline exceeded
2021-03-14 10:28:25.689 [ERROR][1] main.go 223: Failed to verify datastore error=Get "https://10.96.0.1:443/apis/crd.projectcalico.org/v1/clusterinformations/default": context deadline exceeded

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

   - name: IP_AUTODETECTION_METHOD  
    value: "interface=ens.*"

#重新生成pod

kubectl delete  -f   calico.yaml
kubectl apply -f   calico.yaml
kubectl get pods -n kube-system

在这里插入图片描述
恢复正常

怎么查看容器日志?

kubectl logs <容器名> -n kube-system(命名空间)

怎么查看容器事件?

kubectl describe pod (容器名)-n kube-system
实例:kubectl describe pod calico-node-t5vql -n kube-system

kubeadm reset #清空环境
K8S CNI 网路模型特点
1.0一个pod  一个ip
2.0 所有的pod 可以与其他任何pod 直接通信
3.0所有节点可以与所有pod直接通信
4.0pod内部获取到的ip地址与其他pod或节点与其通信时的ip地址是同一个
主流的网络组件有: Flannel,  cakico等
如何让node节点获得kubectl的命令权限
node:   mkdir  /root/.kube/
master  scp  /root/.kube/config    ip:/root/.kube/
切换容器引擎为containerd

#官方文档

https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/#containerd

将node节点替换为containerd

1、配置先决条件

cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# 设置必需的 sysctl 参数,这些参数在重新启动后仍然存在。
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

# Apply sysctl params without reboot
sudo sysctl --system

2、安装containerd

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
yum update -y && sudo yum install -y containerd.io
mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
systemctl restart containerd

3、修改配置文件

vi /etc/containerd/config.toml
   [plugins."io.containerd.grpc.v1.cri"]
        57行  sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.2"  
         ...
         [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
        97行     SystemdCgroup = true
             ...
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
   106 行       endpoint = ["https://b9pmyelo.mirror.aliyuncs.com"]
          
systemctl restart containerd

4.配置kubelet使用containerd

vi /etc/sysconfig/kubelet 
KUBELET_EXTRA_ARGS=--container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock --cgroup-driver=systemd

systemctl restart kubelet

5 快速部署一个网站

使用Deployment控制器部署镜像
kubectl create deployment web --image=lizhenliang/java-demo
kubectl get deploy,pod
#使用service将pod暴露出去
kubectl expose deployment web66 --port=80 --type=NodePort --target-port=8080 --name=web66
kubectk get service
#访问应用
kubectl get svc
在这里插入图片描述
#查看标签
kubectl get pods --show-labels
#根据条件查找标签
kubectl get pods -l app=web
#查看命名空间
kubectl get namespace
在这里插入图片描述
default 为默认命名空间 不指定命名空间默认保存在这里
kube-system: K8S系统方面得命名空间
kube-public: 公开得命名空间谁都可以访问
kube-node-lease: K8s内部命名空间
在这里插入图片描述
kubectl delete deploy pod-01 #删除pod

创建pod两种方式

直接创建

kubectl create  namespace  aliang-cka  #创建命名空间
kubectl create  deployment  pod-01 --image=nginx  -n=aliang-cka

先生成yaml文件,然后创建pod

kubectl  create  deployment  pod-02  --image=nginx  -n=aliang-cka   --dry-run -o yaml    >  nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: pod-02
  name: pod-02
  namespace: aliang-cka
spec:
  replicas: 1
  selector:
    matchLabels:
      app: pod-02
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: pod-02
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}
status: {}

#暴露服务
kubectl expose deployment pod-01 --port=80 --type=NodePort --target-port=80 --name=pod-01 -n=aliang-cka
#查看端口
kubectl get svc -n aliang-cka
在这里插入图片描述
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐