Kubernetes 集群搭建(新人白嫖青云服务器) 一个master节点+两个工作节点

文章目录

    • 1, 购买青云服务器(白嫖)
    • 2,创建 VPC
    • 3,连接测试
    • 4,安装 docker
      • 4.1,安装docker 20.10.7
      • 4.2,配置加速镜像
    • 5,安装 Kubernetes
      • 5.1,要求
      • 5.2,设置hostname
      • 5.3,关闭交换区
      • 5.4,安装 K8s 三大件
      • 5.5,创建 control-plane
      • 5.6,初始化master主节点
      • 5.7,安装网络组件
      • 5.8,Worker 加入集群
      • 5.9,集群自我修复测试
    • 6, 部署 Dashboard
      • 6.1, 运行 pod(创建资源)
      • 6.2, 设置访问端口
      • 6.3, 开放安全组
      • 6.4,访问页面
      • 6.5,创建访问账号
      • 6.6,令牌访问
      • 6.7,界面
    • 7,Kubernetes 常用命令

需要 3台 云服务器,每台机器装上 Docker、Kubelet、Kubectl、Kubeadm。

1, 购买青云服务器(白嫖)

青云 - 官网,自己注册个账号,个人认证后,会给你 优惠券
别担心,不要钱,可以白嫖一段时间(服务器 可用 25元的优惠券)

在这里插入图片描述
在这里插入图片描述
释放了服务器, 公网IP 这里,如果有 就删除。
在这里插入图片描述
我的配额 这里,要确保 公网IP 有3个 以上。如果没有,在 工单 -> 创建工单,联系客服 要。

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

2,创建 VPC

专属私有网络 VPC 帮助您在公有云上构建出一个专属隔离的网络环境。在 VPC 网络内,您可以自定义 IP 地址范围,创建子网,并在子网内创建云服务器、数据库、大数据等各种云资源。您也可以通过管理路由器自定义更多高级管理功能。
在这里插入图片描述

在这里插入图片描述
创建完毕vpc后,开始购买云服务器。

购买3台 2核4G 的服务器

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

在这里插入图片描述
选择服务器数量为3。

点击 立即购买,刷新一下 即可看到下面的 公网IPv4,我这里不就 开放了哈。
在这里插入图片描述
在这里插入图片描述

3,连接测试

互相 ping,都可以 通。(其他不在 这个 VPC 网段的服务器,是ping 不通的)
这里我使用xshell连接工具连接三台青云云服务器:

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

在这里插入图片描述

4,安装 docker

4.1,安装docker 20.10.7

注意 Docker 版本,要和 Kubernetes 版本 有对应关系

# 三台机器上执行
# 安装/更新 yum-utils
yum install -y yum-utils# 配置 yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安装 docker 20.10.7 版本
yum -y install docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io# 查看 docker 版本
docker -v# 启动 docker
systemctl start docker# 查看 docker 是否成功, 有 Client 和 Server 即成功
docker version

分别查看 3台服务器 docker 状态

在这里插入图片描述

在这里插入图片描述

4.2,配置加速镜像

https://82m9ar63.mirror.aliyuncs.com,这个镜像加速 是 雷神的(个人具体可以在 阿里云 配置)

# 三台机子都执行
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker# 查看是否配置成功
docker info

在这里插入图片描述

5,安装 Kubernetes

5.1,要求

  • 每台机器 2GB 或者 更多的 RAM(如果少于这个数字 将会影响应用的运行内存)
  • CPU 2核 以上
  • 集群中 所有的服务器 的网络 彼此可以相互连接。
    购买的 2核4G 的云服务器,并且 相互可以 ping通。

5.2,设置hostname

  • 每台服务器的 主机名不可重复。
# 查看主机名
hostname# 设置主机名
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node-1
hostnamectl set-hostname k8s-node-2# 更新
bash

在这里插入图片描述

5.3,关闭交换区

下面是一些 安全设置

每台机子都执行!!!

# 查看 交换分区
free -m# 将 SELinux 设置为 permissive 模式(相当于将其禁用)  第一行是临时禁用,第二行是永久禁用
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config# 关闭swap;第一行是临时禁用,第二行是永久禁用
swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab# 允许 iptables 检查桥接流量 (K8s 官方要求)
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF# 让配置生效
sysctl --system

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果是本地虚拟机的话 ,虚拟机关闭交换区,三台机器上执行

# 禁用 selinux
vim /etc/selinux/config
SELINUX=disabled# 关闭swap
swapoff -a  # 临时
vim /etc/fstab  # 永久
# 注释下面这行
#/dev/mapper/centos-swap swap                    swap    defaults        0 0# 查看是否成功
free -m

在这里插入图片描述

5.4,安装 K8s 三大件

安装 kubelet、kebeadm、kubectl;注意版本 (1.20.9)

三台机器上执行

# 配置 k8s 的 yum 源地址
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

三台机器上执行

# 安装 kubelet、kubeadm、kubectl
yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes# 启动kubelet
systemctl enable --now kubelet# 查看 kubelet 状态:一会停止 一会运行。 这个状态是对的,kubelet 等待 kubeadm 发号指令。
systemctl status kubelet

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

5.5,创建 control-plane

  • 下载镜像
    三台机器上执行
# 配置镜像,生成 images.sh
sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF# 拉取镜像
chmod +x ./images.sh && ./images.sh

在这里插入图片描述
在这里插入图片描述
报这个错,没启动 docker

在这里插入图片描述
在这里插入图片描述
网段小知识
在这里插入图片描述
可以看到 docker 的 ip 是 172.17.x.x,所以 vps 设置 网段时候,不选择 172.17.x.x 的。

5.6,初始化master主节点

注:初始化 主节点命令,只在 master 服务执行。其他 node 服务器 不用。

# 所有机器添加 master 域名映射,以下 IP 为 master 的 IP;
# 访问 cluster-endpoint 即 访问 192.168.100.3
echo "192.168.100.3  cluster-endpoint" >> /etc/hosts# 主节点初始化 (只在 master 服务器执行, 其他 node 不用)
# --apiserver-advertise-address: master 的 IP
# --control-plane-endpoint: master 的域名
# --service-cidr 和 --pod-network-cidr 是网络范围,雷神 建议不要改。要改的话 2 个cidr 和 vps(172.31.x.x) 的,3 个网络互相不能重叠;还要修改 calico.yaml的 IP(下图有写)。
kubeadm init \
--apiserver-advertise-address=192.168.100.3 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16

保证三台机子都能ping通
在这里插入图片描述

在这里插入图片描述
复制上面 输出的语句,这些命令 需要用到

Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:kubeadm join cluster-endpoint:6443 --token euztag.6yjbhn94ehg6nhn7 \--discovery-token-ca-cert-hash sha256:a6e917b751e424c7a761c2276ae02db95d87ba5a3cc6b374182519ce89aba28b \--control-plane Then you can join any number of worker nodes by running the following on each as root:kubeadm join cluster-endpoint:6443 --token euztag.6yjbhn94ehg6nhn7 \--discovery-token-ca-cert-hash sha256:a6e917b751e424c7a761c2276ae02db95d87ba5a3cc6b374182519ce89aba28b 

在这里插入图片描述

5.7,安装网络组件

注:只在 master 服务执行。其他 node 服务器 不用。
在 master 执行

# 下载 calico.yaml
curl https://docs.projectcalico.org/manifests/calico.yaml -O# 加载配置
kubectl apply -f calico.yaml

如果上面链接下载不到calico,试一下下面的链接:

curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O

5.8,Worker 加入集群

Worker 节点加入到集群中。
在这里插入图片描述

注:此处要复制自己的,不要复制 下面的命令。

# 加入到 集群中,只在 2 个 node 服务器运行。
kubeadm join cluster-endpoint:6443 --token euztag.6yjbhn94ehg6nhn7 \--discovery-token-ca-cert-hash sha256:a6e917b751e424c7a761c2276ae02db95d87ba5a3cc6b374182519ce89aba28b 

在这里插入图片描述
在这里插入图片描述
回到 master 中 查看
在这里插入图片描述
在这里插入图片描述
监控一下 服务器的状态,可以发现 master 服务器 消耗比较大。
在这里插入图片描述
令牌过期
如果令牌过期了,重新 获取令牌。(在 master 服务器中 执行)

# 重新获取令牌
kubeadm token create --print-join-command

5.9,集群自我修复测试

集群自我修复能力测试 (需要 docker 启动的前提下,systemctl start docker)
3台 服务器 分别重启

# 重启
reboot

集群 还是好好的。 nodes 的 STATUS 都是 Ready,查看 pods STATUS 过一会 都是 Running。

在这里插入图片描述

在这里插入图片描述

6, 部署 Dashboard

部署 dashboard(可视化页面),kubernetes 官方提供的可视化界面

6.1, 运行 pod(创建资源)

在 master 执行

# 下载 yaml文件
curl https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml -O

修改recommended.yaml 修改两处nodeName。

vi recommended.yaml

在这里插入图片描述
然后运行

kubectl apply -f recommended.yaml 

附上我的yaml文件:

# Copyright 2017 The Kubernetes Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.apiVersion: v1
kind: Namespace
metadata:name: kubernetes-dashboard---apiVersion: v1
kind: ServiceAccount
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard---kind: Service
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:ports:- port: 443targetPort: 8443selector:k8s-app: kubernetes-dashboard---apiVersion: v1
kind: Secret
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard-certsnamespace: kubernetes-dashboard
type: Opaque---apiVersion: v1
kind: Secret
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard-csrfnamespace: kubernetes-dashboard
type: Opaque
data:csrf: ""---apiVersion: v1
kind: Secret
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard-key-holdernamespace: kubernetes-dashboard
type: Opaque---kind: ConfigMap
apiVersion: v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard-settingsnamespace: kubernetes-dashboard---kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
rules:# Allow Dashboard to get, update and delete Dashboard exclusive secrets.- apiGroups: [""]resources: ["secrets"]resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"]verbs: ["get", "update", "delete"]# Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.- apiGroups: [""]resources: ["configmaps"]resourceNames: ["kubernetes-dashboard-settings"]verbs: ["get", "update"]# Allow Dashboard to get metrics.- apiGroups: [""]resources: ["services"]resourceNames: ["heapster", "dashboard-metrics-scraper"]verbs: ["proxy"]- apiGroups: [""]resources: ["services/proxy"]resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"]verbs: ["get"]---kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard
rules:# Allow Metrics Scraper to get metrics from the Metrics server- apiGroups: ["metrics.k8s.io"]resources: ["pods", "nodes"]verbs: ["get", "list", "watch"]---apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: kubernetes-dashboard
subjects:- kind: ServiceAccountname: kubernetes-dashboardnamespace: kubernetes-dashboard---apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: kubernetes-dashboard
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: kubernetes-dashboard
subjects:- kind: ServiceAccountname: kubernetes-dashboardnamespace: kubernetes-dashboard---kind: Deployment
apiVersion: apps/v1
metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard
spec:replicas: 1revisionHistoryLimit: 10selector:matchLabels:k8s-app: kubernetes-dashboardtemplate:metadata:labels:k8s-app: kubernetes-dashboardspec:nodeName: k8s-mastercontainers:- name: kubernetes-dashboardimage: kubernetesui/dashboard:v2.3.1imagePullPolicy: Alwaysports:- containerPort: 8443protocol: TCPargs:- --auto-generate-certificates- --namespace=kubernetes-dashboard# Uncomment the following line to manually specify Kubernetes API server Host# If not specified, Dashboard will attempt to auto discover the API server and connect# to it. Uncomment only if the default does not work.# - --apiserver-host=http://my-address:portvolumeMounts:- name: kubernetes-dashboard-certsmountPath: /certs# Create on-disk volume to store exec logs- mountPath: /tmpname: tmp-volumelivenessProbe:httpGet:scheme: HTTPSpath: /port: 8443initialDelaySeconds: 30timeoutSeconds: 30securityContext:allowPrivilegeEscalation: falsereadOnlyRootFilesystem: truerunAsUser: 1001runAsGroup: 2001volumes:- name: kubernetes-dashboard-certssecret:secretName: kubernetes-dashboard-certs- name: tmp-volumeemptyDir: {}serviceAccountName: kubernetes-dashboardnodeSelector:"kubernetes.io/os": linux# Comment the following tolerations if Dashboard must not be deployed on mastertolerations:- key: node-role.kubernetes.io/mastereffect: NoSchedule---kind: Service
apiVersion: v1
metadata:labels:k8s-app: dashboard-metrics-scrapername: dashboard-metrics-scrapernamespace: kubernetes-dashboard
spec:ports:- port: 8000targetPort: 8000selector:k8s-app: dashboard-metrics-scraper---kind: Deployment
apiVersion: apps/v1
metadata:labels:k8s-app: dashboard-metrics-scrapername: dashboard-metrics-scrapernamespace: kubernetes-dashboard
spec:replicas: 1revisionHistoryLimit: 10selector:matchLabels:k8s-app: dashboard-metrics-scrapertemplate:metadata:labels:k8s-app: dashboard-metrics-scraperannotations:seccomp.security.alpha.kubernetes.io/pod: 'runtime/default'spec:nodeName: k8s-mastercontainers:- name: dashboard-metrics-scraperimage: kubernetesui/metrics-scraper:v1.0.6ports:- containerPort: 8000protocol: TCPlivenessProbe:httpGet:scheme: HTTPpath: /port: 8000initialDelaySeconds: 30timeoutSeconds: 30volumeMounts:- mountPath: /tmpname: tmp-volumesecurityContext:allowPrivilegeEscalation: falsereadOnlyRootFilesystem: truerunAsUser: 1001runAsGroup: 2001serviceAccountName: kubernetes-dashboardnodeSelector:"kubernetes.io/os": linux# Comment the following tolerations if Dashboard must not be deployed on mastertolerations:- key: node-role.kubernetes.io/mastereffect: NoSchedulevolumes:- name: tmp-volumeemptyDir: {}

等到 Running
在这里插入图片描述

6.2, 设置访问端口

# 修改配置文件 找到 type,将 ClusterIP 改成 NodePort
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard# 找到端口,在安全组放行
kubectl get svc -A |grep kubernetes-dashboard

输入 /type,找到 type,将 ClusterIP 改成 NodePort

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

6.3, 开放安全组

在 ID 右键 -> 解绑,找到 用的哪个资源。
在这里插入图片描述
添加完后,在点击 应用修改。

6.4,访问页面

https://xxxxxxx:32229 (要注意是 https,port 是映射的端口,在配置文件查看)
这里需要用火狐游览器进行访问,使用chrome游览器有问题。

在这里插入图片描述

6.5,创建访问账号

#创建访问账号,准备一个yaml文件; vi dash.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: admin-usernamespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-user
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin
subjects:
- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard
kubectl apply -f dash.yaml

6.6,令牌访问

#获取访问令牌
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}"
eyJhbGciOiJSUzI1NiIsImtpZCI6InpXSkU0TjhCUmVKQzBJaC03Nk9ES2NMZ1daRTRmQ1FMZU9rRUJ3VXRnM3MifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLXgyczhmIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIzOTZmYjdlNS0wMjA2LTQxMjctOGQzYS0xMzRlODVmYjU0MDAiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.Hf5mhl35_R0iBfBW7fF198h_klEnN6pRKfk_roAzOtAN-Aq21E4804PUhe9Rr9e_uFzLfoFDXacjJrHCuhiML8lpHIfJLK_vSD2pZNaYc2NWZq2Mso-BMGpObxGA23hW0nLQ5gCxlnxIAcyE76aYTAB6U8PxpvtVdgUknBVrwXG8UC_D8kHm9PTwa9jgbZfSYAfhOHWmZxNYo7CF2sHH-AT_WmIE8xLmB7J11vDzaunv92xoUoI0ju7OBA2WRr61bOmSd8WJgLCDcyBblxz4Wa-3zghfKlp0Rgb8l56AAI7ML_snF59X6JqaCuAcCJjIu0FUTS5DuyIObEeXY-z-Rw

6.7,界面

在这里插入图片描述

7,Kubernetes 常用命令

命令内容
kubectl get nodex查看 k8s 集群 所有节点
kubectl get ns查看命名空间
kubectl get pods -A查看 k8s 集群 部署了 哪些应用
kubectl get pods查看 默认命名空间(default)部署的应用
kubectl get pod -A -owide查看 完整的信息,有 部署的 节点、节点IP 等。
kubectl get pod -w打印 整个状态变化过程
Namespace 命名空间(-n)
kubectl get pod -n kubernetes-dashboard查看 某个命名空间(kubernetes-dashboard)部署的应用
kubectl create ns hello创建命名空间 hello
kubectl delete ns hello删除命名空间 hello
集群资源
kubectl apply -f xxxx.yaml根据配置文件,给 k8s 集群创建资源
kubectl delete -f hello-yaml.yaml删除 hello-yaml.yaml 配置文件创建的资源
Pod
kubectl run mynginx-k8s --image=nginx创建名为 mynginx-k8s 的 Pod (默认命名空间)
kubectl exec -it Pod名字 – /bin/bash进入到 Pod 里面(和 docker exec -it 一样的)
kubectl describe pod mynginx-k8s查看 Pod mynginx-k8s 的描述
kubectl delete pod mynginx-k8s删除 在默认命名空间的 mynginx-k8s
kubectl delete pod mynginx-k8s -n xxx删除 在 xxx 命名空间的 mynginx-k8s
kubectl logs mynginx-k8s查看 Pod mynginx-k8s 的运行日志(默认的命名空间)
kubectl logs -f -n xxx命名空间 xxxPodName查看 Pod 运行日志(-n 就是 namespace 命名空间)
Deployment
kubectl create deployment mytomcat --image=tomcat:8.5.68用 Deployment 部署 Pod,deploy 名为 mytomcat 使用镜像 tomcat:8.5.68
kubectl get deploy查看 Deployment 创建的资源
kubectl delete deploy mytomcat删除 Deployment 创建的资源,用 delete 是删不掉的
kubectl create deployment my-dep --image=nginx --replicas=3 --replicas=3,部署 3个 Pod my-dep
kubectl scale deploy/my-dep --relicas=5对 Deployment my-dep 扩容 成 5 个 Pod
kubectl scale deploy/my-dep --relicas=2对 Deployment my-dep 缩容 成 2 个 Pod
kubectl get deploy/my-dep -oyaml查看之前用的镜像(spec.container.image)
kubectl get deploy/my-dep -oyamlgrep image
kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record kubectl rollout status deployment/my-dep改变 my-dep 中 nginx 版本(nginx 最新版 -> 1.16.1)滚动更新
kubectl rollout history deployment/my-dep历史记录
kubectl rollout histroy deployment/my-dep --revision=2查看 my-dep 某个历史详情
kubectl rollout undo deployment/my-depmy-dep 回滚(回到上个版本)
kubectl rollout undo deployment/my-dep --to-revision=2my-dep 回滚到指定版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/592612.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CRM市场营销管理功能,如何进行客户细分和数据分析?

CRM管理系统中的营销管理模块&#xff0c;它的锋芒常被销售管理所掩盖&#xff0c;但对于企业的业务来说同样重要。营销部门虽然不像销售人员一样直接面对客户&#xff0c;却是挖掘线索、商机的重要角色。CRM在市场营销领域的关键功能包括&#xff1a;营销漏斗、客户细分、营销…

关于“Python”的核心知识点整理大全50

目录 python_repos.py 17.1.6 概述最受欢迎的仓库 python_repos.py 17.1.7 监视 API 的速率限制 注意 17.2 使用 Pygal 可视化仓库 python_repos.py 17.2.1 改进 Pygal 图表 python_repos.py 往期快速传送门&#x1f446;&#xff08;在文章最后&#xff09;&#xf…

抽象类和接口的区别

抽象类和接口的区别&#xff1a; 抽象类&#xff08;Abstract Class&#xff09;&#xff1a; 抽象类是一种不能被实例化的类&#xff0c;它只能被用作其他类的父类&#xff08;基类&#xff09;。抽象类可以包含抽象方法和非抽象方法。抽象方法是没有具体实现的方法&#xf…

2020年认证杯SPSSPRO杯数学建模B题(第二阶段)分布式无线广播全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 B题 分布式无线广播 原题再现&#xff1a; 以广播的方式来进行无线网通信&#xff0c;必须解决发送互相冲突的问题。无线网的许多基础通信协议都使用了令牌的方法来解决这个问题&#xff0c;在同一个时间段内&#xff0c;只有唯一一个拿到令牌…

医院信息系统集成平台—数据交换层

医院集成平台核心是数据交换总线,这解决当前大部分医院最关注的电子病历与移动医疗等业务系统接口交互共享及消息数据状态同步(消息一体化机制)等问题。集成平台主要包括业务数据集并提供相应的标准处理接口API(含数据采集与数据发布查询更新),同时提供相应的适配器服务来…

20240102使用python3将视频切片改名之后合并

20240102使用python3将视频切片改名之后合并 2024/1/2 22:12 缘起&#xff1a;将迅雷下载的视频切片排序之后再通过ffmpeg合并&#xff01;https://pri-cdn-tx.xiaoeknow.com/app1cE7gLFM1187/confusion_index/1703599111EAPoRE.m3u8?signf17e1a2cc0ddd77801f3c5110116369e&am…

C++ //习题14.2 将例14.3程序改为下面的程序,请分析执行过程,写出运行结果。并指出由于异常处理而调用了哪些析构函数。

C程序设计 &#xff08;第三版&#xff09; 谭浩强 习题14.2 习题14.2 将例14.3程序改为下面的程序&#xff0c;请分析执行过程&#xff0c;写出运行结果。并指出由于异常处理而调用了哪些析构函数。 IDE工具&#xff1a;VS2010 Note: 使用不同的IDE工具可能有部分差异。 代…

Qt:自定义一个好看的等待提示Ui控件

一、2024 永不卡顿 爱的魔力它转圈圈~ 等待样式控件是我们在做UI时出场率还挺高的控件之一&#xff0c;通常情况下有如下的几种实现方式&#xff1a; 1> 获取一张gif的资源图&#xff0c;然后使用QMovie 在一个QLabel 控件上加载显示gif的waiting等待动态。 2> 自定义绘图…

Linux 进程(五) 调度与切换

概念准备 当一个进程放在cpu上运行时&#xff0c;是必须要把进程的代码跑完才会进行下一个进程吗&#xff1f;答案肯定是 不对。现在的操作系统都是基于时间片轮转执行的。 时间片&#xff08;timeslice&#xff09;又称为“量子&#xff08;quantum&#xff09;”或“处理器片…

计算机网络【Cookie和session机制】

会话&#xff08;Session&#xff09;跟踪是Web程序中常用的技术&#xff0c;用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份&#xff0c;Session通过在服务器端记录信息确定用户身份。 本章将系统地讲述Cookie与Sess…

【Pytorch】学习记录分享11——PyTorch GAN对抗生成网络

PyTorch GAN对抗生成网络 0. 工程实现1. GAN对抗生成网络结构2. GAN 构造损失函数&#xff08;LOSS&#xff09;3. GAN对抗生成网络LOSS损失函数说明 0. 工程实现 1. GAN对抗生成网络结构 2. GAN 构造损失函数&#xff08;LOSS&#xff09; LOSS公式与含义&#xff1a; LOSS…

javascript 常见工具函数(四)

31.RGB值和十六进制值之间的转换&#xff1a; &#xff08;1&#xff09;十六进制的颜色转为 RGB格式&#xff1a; /*16进制颜色转为RGB格式*/String.prototype.colorRgb function () {var sColor this.toLowerCase();if (sColor && reg.test(sColor)) {if (sColor.l…

C++初阶——类与对象

目录 C宏函数 在使用宏函数时&#xff0c;有几个常见的错误需要注意&#xff1a; 宏函数在某些情况下有以下优势&#xff1a; 1.C宏函数 在 C 中&#xff0c;宏函数&#xff08;Macro Function&#xff09;是使用预处理器定义的宏&#xff08;Macro&#xff09;&#xff0…

初识Linux下进程

&#x1f30e;初识进程 初识进程 简单认识一下进程 如何管理进程 进程属性信息 内核运行队列 查看进程 通过系统调用获取进程标识符       父子进程       查看运行中的进程 总结 前言&#xff1a; 我们在电脑上点开的一个个应用&#xff0c;其实就是一个个进程&am…

初识Java并发,一问读懂Java并发知识文集(4)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

智能标志桩:防盗防外物入侵_图像监测_态势感知_深圳鼎信

智能标志桩是一种新型的智能化标志设备&#xff0c;主要用于标识地下管道的位置、类型等&#xff0c;起警示作用。这与传统的标志桩大不相同&#xff0c;物联网的高速发展赋予了智能标志桩科技的力量&#xff0c;使它可以连接互联网&#xff0c;还具备图像监控的功能&#xff0…

2024年P气瓶充装证考试题库及P气瓶充装试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年P气瓶充装证考试题库及P气瓶充装试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大纲随机出的P气…

C++Qt6 多种排序算法的比较 数据结构课程设计 | JorbanS

一、 问题描述 在计算机科学与数学中&#xff0c;一个排序算法&#xff08;英语&#xff1a;Sorting algorithm&#xff09;是一种能将一串资料依照特定排序方式排列的算法。最常用到的排序方式是数值顺序以及字典顺序。有效的排序算法在一些算法&#xff08;例如搜索算法与合…

Linux系统操作常用指令

打开终端&#xff1a; ctrlshiftt:切换标签 ctrlshiftn:新增窗口 Linux命令大全(超详细版)_第二范式的博客-CSDN博客 VMware运行时以管理员身份运行&#xff0c;可以避免许多问题。 输入法切换 ctrl 空格 放大终端&#xff1a;ctrlshift"" 缩小终端&#xff1a;ctrl“…

【深度学习-基础学习】Transformer 笔记

本篇文章学习总结 李宏毅 2021 Spring 课程中关于 Transformer 相关的内容。课程链接以及PPT&#xff1a;李宏毅Spring2021ML这篇Blog需要Self-Attention为前置知识。 Transfomer 简介 Transfomer 架构主要是用来解决 Seq2Seq 问题的&#xff0c;也就是 Sequence to Sequence…