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;

vi /etc/hosts

192.168.182.139 master
192.168.182.138 node01
192.168.182.137 node02

 #将桥接的 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

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

 

 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

以下做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组件的家目录 提权(必做)
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

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

复制、记录申请加入集群命令
kubeadm join 192.168.226.130:6443 --token z62t2l.0rp01bd7z4hwu375 \
    --discovery-token-ca-cert-hash sha256:069d44c04fd5c0e2576dab8efc22636eaabb341efa2d707c4fddc43ab30be48a 

 在master上做

kubectl apply -f \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
##或者使用镜像包导入的方式完成flannel的部署

node节点一直报错 无法ready

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

二、k8s命令

1、先安装nginx-deployment.yaml

 可以看到 副本集中即使删除了 也还会创建新的 容器  副本集内的数量是可以更改但是添加 或者删除是无法改变副本集中的数量

此时的版本 是 21版本  无证书

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

 [root@master ~]# kubectl describe nodes nginx-585449566-764c4  可以查看pod的信息

左图在监控  有图在删除   可以看到删除后 副本集中 会自动添加新的容器 

 查看所有

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

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

 nodeport模式:指的是pod暴露出去时,使用的是该node节点的ip和其端口范围

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

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

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

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

 查看资源对象简写

[root@localhost bin]# kubectl api-resources

查看关联后端的节点

[root@localhost bin]# kubectl get endpoints

网络状态详细信息

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

 服务暴露的端口

[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

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

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

 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 <command> --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版本

 可以看到此时nginx版本以更新成1.14版本

[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

 执行回滚

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

deployment.extensions/nginx

//检查回滚状态

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

deployment "nginx" successfully rolled out

 

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

//查看deployment

[root@localhost bin]# kubectl get deploy

[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直接下载

总结:小结:
一、首先本章内容介绍的是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 

 输入一下命令

[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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值