K8S入门学习笔记第一天,使用kubeadmin部署集群,node节点获取kubectl命名,容器切换为containerd
检测之前的集群环境是否正常两条命令1.kubectl get pods -n kube-system#检测k8s组件kube-system命名空间下的pod是否正常2.kubectl get nodes,pod,svc#检查node,pod,svc是否正常#发现有一个pod启动不正常查看日志发现是无法启动识别我的机器网卡,修改calico.yaml重新生成podkubectl logs -fcal
检测之前的集群环境是否正常
两条命令
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
更多推荐
所有评论(0)