k8s安装及命令

目录

一、安装k8s

1、环境配置(三台机子一起做)

2、docker安装

 3、所有节点配置K8S源

二、k8s命令

故障集:


一、安装k8s

准备三台虚拟机

master 192.168.182.139

node1 192.168.182.138

node2 192.168.182.137

1、环境配置(三台机子一起做)

swapoff -a #临时
sed -ri 's/.*swap.*/#&/' /etc/fstab #永久
free -g #验证,swap 必须为 0;

k8s安装及命令_第1张图片

vi /etc/hosts

192.168.182.139 master
192.168.182.138 node01
192.168.182.137 node02k8s安装及命令_第2张图片

 #将桥接的 IPv4 流量传递到 iptables 的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

k8s安装及命令_第3张图片

2、docker安装

安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

设置阿里云镜像源
cd /etc/yum.repos.d/
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装docker-ce 社区版
yum install -y docker-ce

#环境配置

systemctl stop firewalld
systemctl disable firewalld

setenforce 0

vim /etc/selinux/config
SELINUX=disabled

systemctl start docker
systemctl enable docker

k8s安装及命令_第4张图片

 k8s安装及命令_第5张图片

 3、所有节点配置K8S源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

#安装 kubelet、kubeadm、kubectl 组件
yum list|grep kube
yum install -y kubelet-1.21.3 kubeadm-1.21.3 kubectl-1.21.3
systemctl enable kubelet
systemctl start kubelet

k8s安装及命令_第6张图片

以下做master操作

master节点制作
kubeadm init \
--apiserver-advertise-address=192.168.182.139 \ 
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.21.3 \
--service-cidr=10.125.0.0/16 \
--pod-network-cidr=10.150.0.0/16

如有问题:
kubeadm init --apiserver-advertise-address=192.168.182.139 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version v1.21.3 --service-cidr=10.125.0.0/16 --pod-network-cidr=10.150.0.0/16

安装好后 会出现7个镜像

k8s安装及命令_第7张图片

创建K8S组件的家目录 提权(必做)
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

k8s安装及命令_第8张图片

将上面master生成的  复制在node1和2中 

复制、记录申请加入集群命令
kubeadm join 192.168.226.130:6443 --token z62t2l.0rp01bd7z4hwu375 \
    --discovery-token-ca-cert-hash sha256:069d44c04fd5c0e2576dab8efc22636eaabb341efa2d707c4fddc43ab30be48a 
k8s安装及命令_第9张图片

 在master上做

kubectl apply -f \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
##或者使用镜像包导入的方式完成flannel的部署k8s安装及命令_第10张图片

node节点一直报错 无法ready

原因:pod在创建时 会部署init环境  需要等待红框内的环境部署完毕才可以进行下一步

k8s安装及命令_第11张图片

二、k8s命令

1、先安装nginx-deployment.yaml

k8s安装及命令_第12张图片

k8s安装及命令_第13张图片 可以看到 副本集中即使删除了 也还会创建新的 容器  副本集内的数量是可以更改但是添加 或者删除是无法改变副本集中的数量k8s安装及命令_第14张图片

k8s安装及命令_第15张图片此时的版本 是 21版本  无证书k8s安装及命令_第16张图片

[root@master ~]# kubectl describe nodes master 使用这条命令可以查看主master的信息

k8s安装及命令_第17张图片 [root@master ~]# kubectl describe nodes nginx-585449566-764c4  可以查看pod的信息k8s安装及命令_第18张图片

左图在监控  有图在删除   可以看到删除后 副本集中 会自动添加新的容器 k8s安装及命令_第19张图片

k8s安装及命令_第20张图片 查看所有

k8s安装及命令_第21张图片

想要删除 需要先删掉控制器(pod分为两种 一种是自主式、申明式指带有控制器管理的pod)

k8s安装及命令_第22张图片

 ⭐⭐⭐发布nginx service提供负载均衡的功能

k8s安装及命令_第23张图片

k8s安装及命令_第24张图片

 nodeport模式:指的是pod暴露出去时,使用的是该node节点的ip和其端口范围k8s安装及命令_第25张图片

 面试题:pod怎么暴露出去的?service有几种模式?有什么区别

节点之间通讯    有nodeport和cluserip模式   

1/2表示  启动“并就绪”的意思 

面试题:主进程活着,但是健康检查失败,也就是未就绪,所以ready为0/2,但是status为running

k8s安装及命令_第26张图片

 查看资源对象简写

[root@localhost bin]# kubectl api-resources

查看关联后端的节点

[root@localhost bin]# kubectl get endpoints

网络状态详细信息

[root@localhost bin]# kubectl get pods -o wide

k8s安装及命令_第27张图片

 服务暴露的端口

[root@localhost bin]# kubectl get svc

在node01操作,查看负载均衡端口30638

//kubernetes里kube-proxy支持三种模式,在v1.8之前我们使用的是iptables 以及 userspace两种模式,在kubernetes 1.8之后引入了ipvs模式

1、ipvs   2、namespace  3、userspace

[root@localhost ~]# yum install ipvsadm -y

[root@localhost ~]# ipvsadm -L -n

在master01操作 查看访问日志(注意:如果访问其他node无法访问检查proxy组件

[root@localhost bin]# kubectl get pods

[root@localhost bin]# kubectl logs nginx-585449566-dghd6

k8s安装及命令_第28张图片

[root@master ~]# kubectl logs nginx-585449566-jv8kp

[root@master ~]# kubectl logs nginx-585449566-wnvb7k8s安装及命令_第29张图片

 kubectlget endpoints 查看的是service服务发现这个资源代理后端位置k8s 集群的service是api-server nginx-service这个pod的service代理的是所有pod节点的位置

 ⭐⭐⭐更新nginx 为1.14版本

//谷歌浏览器重新加载刷新页面查看nginx版本信息

[root@localhost bin]# kubectl set --help
]Configure application resources 

These commands help you make changes to existing application resources.

Available Commands:
  env            Update environment variables on a pod template
  image          更新一个 pod template 的镜像
  resources      在对象的 pod templates 上更新资源的 requests/limits
  selector       设置 resource 的 selector
  serviceaccount Update ServiceAccount of a resource
  subject        Update User, Group or ServiceAccount in a
RoleBinding/ClusterRoleBinding

Usage:
  kubectl set SUBCOMMAND [options]

Use "kubectl  --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all
commands).

 此时nginx是1.21版本

k8s安装及命令_第30张图片

k8s安装及命令_第31张图片

 可以看到此时nginx版本以更新成1.14版本k8s安装及命令_第32张图片

[root@localhost bin]# kubectl rollout history deployment/nginx ⭐⭐⭐回滚nginx

[root@localhost bin]# kubectl rollout --help
Manage the rollout of a resource.
  
Valid resource types include: 

  * deployments  
  * daemonsets  
  * statefulsets

Examples:
  # Rollback to the previous deployment
  kubectl rollout undo deployment/abc
  
  # Check the rollout status of a daemonset
  kubectl rollout status daemonset/foo

Available Commands:
  history     显示 rollout 历史
  pause       标记提供的 resource 为中止状态
  resume      继续一个停止的 resource
  status      显示 rollout 的状态
  undo        撤销上一次的 rollout

查看历史版本

[root@localhost bin]# kubectl rollout history deployment/nginx

k8s安装及命令_第33张图片

 执行回滚

[root@localhost bin]# kubectl rollout undo deployment/nginx

deployment.extensions/nginx

//检查回滚状态

[root@localhost bin]# kubectl rollout status deployment/nginx

deployment "nginx" successfully rolled out

k8s安装及命令_第34张图片

 

删除nginx (当需要删除时 需要把相关资源全部删除才行)

//查看deployment

[root@localhost bin]# kubectl get deploy

k8s安装及命令_第35张图片

[root@localhost bin]# kubectl delete deployment/nginx
删除服务SVC
[root@localhost bin]# kubectl get svc
[root@localhost bin]# kubectl delete svc/nginx-service
[root@localhost bin]# kubectl get svc
查看具体资源的详细信息
[root@localhost bin]# kubectl run nginx --image=nginx:latest --port=80 --replicas=3、
[root@localhost bin]# kubectl get pods
[root@localhost bin]# kubectl describe pod nginx-7697996758-75shs
查看deployment资源
[root@localhost bin]# kubectl describe deployment/nginx
进入pod
[root@localhost bin]# kubectl exec -it nginx-7697996758-75shs bash

 当run 下载副本集是 出现一个下面的情况 

原因:从logs中看出 是下载镜像时  timout 超时

1、可以直接从其他地方导入镜像 

2、可以直接重新加载试试

3、docker pull直接下载

k8s安装及命令_第36张图片

总结:小结:
一、首先本章内容介绍的是kubectl命令常用操作和Pod的生命周期1、分类
1、查询命令
kubectl get 资源类型具体的资源对象【-n namespace 指定名称空间,默认为default】

kubectl describe资源类型具体的资源对象【-n namespace 指定名称空间,默认为default】

kubectl logs pod _name 【-n namespace指定名称空间,默认为default】

⭐⭐⭐其中主要介绍了【kubectl describe】查看详细信息中的部分:

1)【kubectl describe nodes master】
重要的核心点在于:
Taints :                               node-role. kubernetes.io/ master:NoSchedule
Unschedulable:                  false
因为以上: Master几点默认被打了污点,所以Pod不可调度到Master这里

2)排障
场景:我们通过监控告警得知,K8s集群中node2节点notready ( kubectl get nodes)

[ root@master ~]# kubectl get nodes
NAME  STATUS   ROLES   AGE    VERSION

master  Ready      master   171m   v1.15.0

node01 Ready       node    168m    v1.15.0

node02 NotReady  node    169m    v1.15.0

#我们先通过以下命令查看events事件:
kubectl describe nodes node02
查看events事件-》再定位到问题点

1、网络问题(flannel问题)―》到达node02节点,发现node02还是可以登陆的,但是使用ifconfig之后,发现flannel0网卡没了解决的问题:如何让flannel网桥恢复正常

2、node02节点真的宕机了—》宕机的原因—》因为资源不够

故障集:

输入 kubectl  get cs 显示unhealthy k8s安装及命令_第37张图片

 输入一下命令

[root@master ~]# sed -i 's/- --port=0/# - --port=0/g' /etc/kubernetes/manifests/kube-scheduler.yaml
[root@master ~]# sed -i 's/- --port=0/# - --port=0/g' /etc/kubernetes/manifests/kube-controller-manager.yaml 

cd到指定目录下[root@master ~]# cd /etc/kubernetes/manifests

输入:[root@master manifests]# kubectl apply -f kube-controller-manager.yml

k8s安装及命令_第38张图片

你可能感兴趣的:(容器,k8s)