玩转容器安全一 - 虚拟机搭建简易版K8s集群

news/2024/6/3 19:26:07 标签: 容器, kubernetes, 安全, 网络安全, 云安全

在虚拟机折腾K8s

# Date 2020/11/19
# Operation System: Centos7
# Docker Version: 19.03.13
# Kubernetes Version: 1.19.0

# k8s-master:10.10.10.100
# k8s-node1:10.10.10.101
# k8s-node2:10.10.10.102

虚拟机系统初始化(Master与Node均需执行)

  • 配置网络与主机信任
vim /etc/hosts

10.10.10.100    k8s-master
10.10.10.101    k8s-node1
10.10.10.102    k8s-node2
  • 关闭交换分区
# 临时关闭
swapoff -a

# 永久关闭,编辑/etc/fstab文件注释swap
  • 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
  • 安装docker软件
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum install docker-ce.x86_64 docker-ce-cli.x86_64 -y

# 配置docker开机启动并启动docker服务
systemctl enable docker.service
systemctl start docker.service
  • 配置docker加速
vim /etc/docker/daemon.json

{
  "registry-mirrors": ["https://bdf5zlvt.mirror.aliyuncs.com"]
}

systemctl daemon-reload
systemctl restart docker.service

安装Kubernetes(Master与Node均需执行)

# 配置yum源
vim /etc/yum.repos.d/kubernetes.repo

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

yum install kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0 -y

systemctl enable kubelet.service
systemctl start kubelet.service

# kubectl命令自动补齐
echo "source <(kubectl completion bash)" >> ~/.bash_profile
source ~/.bash_profile 
  • 下载镜像
# 查看待下载的镜像
kubeadm config images list --kubernetes-version=1.19.0

# 为了方便,写一个脚本来执行
vim get_image.sh
bash get_image.sh
#!/bin/bash

# 使用阿里云镜像来下载
new_registry=registry.cn-hangzhou.aliyuncs.com/google_containers
old_registry=k8s.gcr.io

# arr的值是使用上述命令得到的,这里也可以用命令
arr=(kube-apiserver:v1.19.0 kube-controller-manager:v1.19.0 kube-scheduler:v1.19.0 kube-proxy:v1.19.0 pause:3.2 etcd:3.4.9-1 coredns:1.7.0)
# arr=(`kubeadm config images list --kubernetes-version=1.19.0 | awk -F '/' '{print $2}'`)
for var in ${arr[@]}
do
  docker pull $new_registry/$var
  docker tag $new_registry/$var $old_registry/$var
done
# 查看镜像
docker image ls -a

image-20201119215819326

配置Kubernetes Master(仅在Master节点执行)

kubeadm init --apiserver-advertise-address 10.10.10.100 --pod-network-cidr=10.20.0.0/16 --kubernetes-version 1.19.0

# 一定要记住这里的输出
# kubeadm join 10.10.10.100:6443 --token x69j0h.spr9aisuox02xcbj --discovery-token-ca-cert-hash sha256:9291f5085dad5b23caf982a8faf042aa4331d956039c36438f02f0ffb34b7f44

# 配置环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile 

Kube-Flannel网络配置

curl https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml -o kube-flannel.yml
kubectl apply -f kube-flannel.yml

Kube-Dashboard配置

curl https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml -o recommended.yaml

vim recommended.yaml

# 官方部署Dashboard的服务没使用NodePort,将yaml文件下载到本地,在Service里添加NodePort
---

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
spec:
  type: NodePort # 此行为新增
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30000 # 此行为新增
  selector:
    k8s-app: kubernetes-dashboard

---
# 当我们直接这样部署后
kubectl apply -f recommended.yaml

# 查看端口信息
netstat -tulnp

image-20201119220200935

# 使用浏览器进行访问

# 这个时候需要Token才可以认证,使用如下命令即可获取Token,注意最后一个参数根据实际为准
kubectl describe secret -n kubernetes-dashboard kubernetes-dashboard-token-72krn

image-20201119220713455

# 注意右上角的报错,我查了很多资料说法很多,但是其实解决没有那么复杂,什么配置权限都不用

# 修改配置文件,注释apiiGroups,resources与verbs重新进行配置,生产不要这么搞哟!
vim recommended.yaml
---

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
rules:
  # Allow Metrics Scraper to get metrics from the Metrics server
  # - apiGroups: ["metrics.k8s.io"]
  - apiGroups: ["*"]
    # resources: ["pods", "nodes"]
    resources: ["*"]
    # verbs: ["get", "list", "watch"]
    verbs: ["*"]

---
# 重新部署一下,并再次访问
kubectl apply -f recommended.yaml

# 同时需要注意,使用的Token应该是namespace为kubernetes-dashboard的Token

image-20201119225806131

配置Kubernetes Node(仅在Node节点执行)

# 将Node1 和 Node2 加入集群
kubeadm join 10.10.10.100:6443 --token x69j0h.spr9aisuox02xcbj --discovery-token-ca-cert-hash sha256:9291f5085dad5b23caf982a8faf042aa4331d956039c36438f02f0ffb34b7f44

image-20201119231404945

玩转Kubernetes命令

# 在master查看Nodes
kubectl get nodes/kubectl get node

# 查看所有命名空间
kubectl get pod --all-namespaces

# 查看Secret信息
kubectl get secret

# 查看某个namespace的Secret信息
kubectl get secret -n kubernetes-dashboard

# 获取Token内容
kubectl describe secret -n kubernetes-dashboard kubernetes-dashboard-token-72krn

# 查看Pod信息
kubectl get pod/kubectl get pods

# 查看某个namespace的Pod信息
kubectl get pod -n kubernetes-dashboard

# 获取更详细的pod信息
kubectl get pod -n kubernetes-dashboard -o wide

# 允许master节点可以被任务调度安装pod
kubectl taint node k8s-master node-role.kubernetes.io/master-

# 不允许master节点可以被任务调度安装pod
kubectl taint node k8s-master node-role.kubernetes.io/master=""

# 查看副本数
kubectl get deployment -n kubernetes-dashboard

# 查看副本详细信息
kubectl describe deployments

# 查看服务
kubectl get services/kubectl get service

image-20201119231449697image-20201119231608793
未完待续…………


http://www.niftyadmin.cn/n/930245.html

相关文章

JavaScript变量、数据类型、函数

#转载请留言联系 说在前面&#xff1a; JavaScript 是一种弱类型语言&#xff0c;javascript的变量类型由它的值来决定。 JavaScript语句的末尾用 ; 结束。空格没有特殊意义。 1.JavaScript的变量 1、区分大小写2、第一个字符必须是字母、下划线&#xff08;_&#xff09;或者美…

玩转容器安全二 - 容器安全概述

容器安全概述 根据我自己的理解&#xff0c;将容器安全划分成了6个方向&#xff0c;各个方面还存在二级分支方向&#xff0c;本文就这6个方向及其二级分支展开我对容器安全的理解。话不多说&#xff0c;开篇一幅图&#xff0c;后面全靠编。 承载容器或容器集群的宿主机的安全性…

阿里云IoT强势来袭

早在2014年&#xff0c;阿里云就开始启动物联网研发&#xff0c;经过多年积累和探索&#xff0c;目前已经完成城市、生活、制造、汽车四大物联网领域的核心技术布局&#xff0c;即1朵云、2个端、3类伙伴、4大领域的“1234”布局。 从1995年比尔盖茨首次提出“物联网”这一名词&…

软工实践第三次作业112

3 转载于:https://www.cnblogs.com/S031402112/p/9690977.html

混合云架构下的安全风险分析和安全解决方案建议

原文链接 01.混合云架构下的安全风险分析 1. 混合云架构下的安全风险分析 企业混合云环境&#xff0c;一般包括一个或多个公有云厂商以及自建的私有云平台&#xff0c;从信息安全风险管理角度来看&#xff0c;实施混合云涉及到IT基础架构和应用架构的重大变更&#xff0c;因…

Nginx 的 access log 如何以 json 形式记录?

Nginx 的 access log 默认是以空格分隔的字符串形式记录的&#xff0c;格式如下 log_format proxy [$time_local] $remote_addr $protocol $status $bytes_received $bytes_sent $session_time "$upstream_addr" "$upstream_bytes_sent" "$upstream_b…

[ZJOI2009]假期的宿舍-解题报告

题目链接&#xff1a;https://www.luogu.org/problemnew/show/P2055 我真的觉得这道题很恶心。 考点&#xff1a;二分图匹配||网络流 思路&#xff1a;建立超级源点和汇点&#xff0c;分为两个集合&#xff0c;需要床位的为一个集合&#xff0c;提供床位的为第二个集合&#xf…

云安全(一) - 浅谈基于IaaS公有云的中小型企业基础安全建设

背景 互联网数据中心&#xff08;IDC&#xff09;属于互联网基础设施范畴的一个细分领域。为企业、金融机构等提供一个存放服务器的空间场所&#xff0c;随着科技技术的发展&#xff0c;IDC也经历了一个又一个的里程碑&#xff0c;如下图是&#xff1a;摘自《美国数据中心建设…