docker安全三:k8s集群环境搭建
文章最后更新时间为:2021年05月24日 13:10:28
文章汇总:
vmware 准备的虚拟机环境:
- master 192.168.179.133 ubuntu20.04
- node1 192.168.179.132 ubuntu20.04
1.设置hostname
# node1执行
sudo hostnamectl set-hostname node1
echo "127.0.0.1 node1.localdomain node1" | sudo tee -a /etc/hosts
# master执行
sudo hostnamectl set-hostname master
echo "127.0.0.1 master.localdomain master" | sudo tee -a /etc/hosts
2.环境对齐,在所有节点上都需要执行
1. 禁止swap分区
sudo swapoff -a
sudo vi /etc/fstab 修改/etc/fstab,注释掉swap那行,持久化生效
2. 对齐时区
sudo timedatectl set-timezone Asia/Shanghai
sudo systemctl restart rsyslog
3. 加载br_netfilter模块
lsmod | grep br_netfilter
如果没有,执行
sudo modprobe br_netfilter
sudo sysctl --system
3.在所有节点上安装docker
sudo apt update && \
sudo apt install docker.io && \
sudo systemctl start docker && \
sudo systemctl enable docker
4.在所有节点上安装Kubectl,kubelet,kubeadm
# 使得 apt 支持 ssl 传输
sudo apt-get update && sudo apt-get install -y apt-transport-https
# 下载 gpg 密钥
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
# 添加 k8s 镜像源
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
# 更新源列表
sudo apt-get update
# 下载 kubectl,kubeadm以及 kubelet
sudo apt-get install -y kubelet kubeadm kubectl
5.在master上搭建集群
# 初始化master
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
上面的命令执行成功后,会输出一条和kubeadm join相关的命令,后面加入worker node的时候要使用。
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 部署一个 Flannel pod network
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
6.在node1上执行,加入集群
sudo kubeadm join 192.168.179.133:6443 --token q7klz6.f6y8rgauoccdpiib \
--discovery-token-ca-cert-hash sha256:3dd405c77710f8a9bc45e8aaa8119340bddeba7bc3a363c81d7a83e9f846a1df
7.然后在master上查看集群情况
yanq@master:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 6m39s v1.21.1
node1 Ready <none> 3m10s v1.21.1
可以看到都是ready状态了,到这里k8s集群搭建完毕。
下面来运行一个nginx看看,在master节点上准备deployment和service文件:
# nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
selector:
app: nginx
spec:
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080
运行
kubectl apply -f nginx.yaml
结果