关于程序员:K8S杂记

2次阅读

共计 3567 个字符,预计需要花费 9 分钟才能阅读完成。

一、部署
(1)kubeadm 工具:

•kubeadm init:初始化一个 Master 节点
•kubeadm join:将工作节点退出集群
•kubeadm upgrade:降级 K8s 版本
•kubeadm token:治理 kubeadm join 应用的令牌
•kubeadm reset:清空 kubeadm init 或者 kubeadm join 对主机所做的任何更改
•kubeadm version:打印 kubeadm 版本
•kubeadm alpha:预览可用的新性能

(2)初始化配置

# 敞开防火墙
systemctl stop firewalld
systemctl disable firewalld

# 敞开 selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永恒
setenforce 0  # 长期

# 敞开 swap
swapoff -a  # 长期
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永恒

# 依据布局设置主机名
hostnamectl set-hostname <hostname>

# 在 master 增加 hosts
cat >> /etc/hosts << EOF
192.168.31.61 k8s-master1
192.168.31.62 k8s-node1
192.168.31.63 k8s-node2
EOF

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

# 工夫同步
yum install ntpdate -y
ntpdate time.windows.com

(3)装置 docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce
systemctl enable docker && systemctl start docker

配置镜像下载加速器:

cat > /etc/docker/daemon.json << EOF
{"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOF

systemctl restart docker
docker info

增加阿里云 YUM 软件源

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

装置 kubeadm,kubelet 和 kubectl

yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
systemctl enable kubelet

部署 Kubernetes Master

kubeadm init \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.20.0 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16 \
  --ignore-preflight-errors=all

初始化实现后,最初会输入一个 join 命令,先记住,上面用。
拷贝 kubectl 应用的连贯 k8s 认证文件到默认门路:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

查看工作节点:
kubectl get nodes
退出 Kubernetes Node
向集群增加新节点,执行在 kubeadm init 输入的 kubeadm join 命令

kubeadm join **** --token **** \
--discovery-token-ca-cert-hash sha256:****

默认 token 有效期为 24 小时,当过期之后,该 token 就不可用了。这时就须要从新创立 token,能够间接应用命令快捷生成:

kubeadm token create --print-join-command

部署容器网络(CNI)

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

测试 kubernetes 集群

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc

拜访地址:http://NodeIP:Port

二、常用命令
应用 Deployment 控制器部署镜像

kubectl create deployment web --image=nginx --replicas=3
kubectl get deploy,pods

应用 service 将 pod 裸露进来

kubectl expose deployment web --port=80 --target-port=80 --type=NodePort
kubectl get service

部署镜像

kubectl apply -f ***.yaml
kubectl create deployment web --image=nginx:1.16 --replicas=3

利用降级

kubectl apply -f ***.yaml
kubectl set image deployment/web nginx=nginx:1.17

程度扩容

批改 yaml 里 replicas 值,再 apply
kubectl scale deployment web --replicas=10

公布失败回滚

kubectl rollout history deployment/web #查看历史公布版本
kubectl rollout undo deployment/web #回滚上一个版本
kubectl rollout undo deployment/web --to-revision=2 #回滚历史指定版本

利用下线

kubectl delete deploy/web
kubectl delete svc/web

pod 命令

创立 pod:
kubectl apply -f pod.yaml
或者应用命令:kubectl run nginx --image=nginx
查看 pod:
kubectl get pods
kubectl describe pod <Pod 名称 >
查看日志:kubectl logs <Pod 名称 > [-c Container]
kubectl logs <Pod 名称 > [-c Container] -f
进入容器终端
kubectl exec <Pod 名称 > [-c Container] --bash
删除 Pod
kubectl delete pod <Pod 名称 >

service 命令

创立 service
kubectl apply -f service.yaml
查看 service
kubectl get service 

查看 service 对应的 pod

kubectl get ep
kubectl get service pod1 -o yaml
kubectl get pods -l app=pvc

裸露 pod 上的标签

kubectl get pods --show-labels

kubectl get ep -w

ss -antp|grep 31871

主动生成 yaml 文件

kubectl create deployment java-demo --image=** --dry-run -o yaml > web.yaml
kubectl expose deployment java-demo --port=80 --target-port=8080 --type=NodePort --dry-run -o yaml > svc.yaml
正文完
 0