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

结果

2021-05-24T03:58:36.png
2021-05-24T04:00:46.png

1 + 8 =
快来做第一个评论的人吧~