关闭防火墙

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
验证,swap 必须为 0:free -g

添加主机名与IP映射

vi /etc/hosts
172.19.139.127 K8s-master
172.19.139.125 k8s-salve-01
172.19.139.126 k8s-salve-02

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

安装Docker博客地址

https://blog.csdn.net/weixin_45031570/article/details/127794675?spm=1001.2014.3001.5501

设置阿里云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.17.3 kubeadm-1.17.3 kubectl-1.17.3
--设置kubelet开机启动:
systemctl enable kubelet
--开启kubelet默认是起不来的,后面会处理
systemctl start kubelet

Master节点初始化(只对master操作):

1)拉取代码所需镜像:

执行权限chmod 700 master_images.sh
执行 ./master_images.sh,文件如下:

#!/bin/bash
images=(
kube-apiserver:v1.17.3
kube-proxy:v1.17.3
kube-controller-manager:v1.17.3
kube-scheduler:v1.17.3
coredns:1.6.5
etcd:3.4.3-0
pause:3.1
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
# docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
k8s.gcr.io/$imageName
done

2).kubeadm 初始化:

192.168.182.130这个是master节点地址

kubeadm init \
--apiserver-advertise-address=192.168.182.130 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.17.3 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16

3).保存kubeadm token信息(这个步骤是基于{ kubeadm 初始化}上一个步骤)

当步骤二kubeadm 初始化后,会在linux中生成以下的token令牌,复制这段代码到子节点中就可以配置成集群了

kubeadm join 192.168.182.130:6443 --token xiyzhk.o26530jlgl6ygxei \
--discovery-token-ca-cert-hash sha256:61c6e872765a61d530bdc368c5b174988ab77faef62a3caba54c5332a202496b

token过期怎么获取

  1. kubeadm token create --print-join-command
  2. kubeadm token create --ttl 0 --print-join-command 永久不会过期

安装POD网络插件(CNI)

kubectl apply -f kube-flannel.yml

kubectl命令操作:

kubectl get nodes 查询当前主节点加入节点,必须所有节点状态都是Ready状态
watch kubectl get pod -n kube-system -o wide 查看Pod初始化进度
kubectl get pods -n kube-system 查看指定名称空间的pods
kubectl get pods --all-namespaces 查看所有名称空间的pods;一定得是running状态;
kubectl get all 获取K8s所有资源
kubectl get pods -o wide  获取各节点部署信息
kubectl get svc 查看服务
kubectl get svc -o wide 

排错:

在初始化时:this Docker version is not on the list of validated versions: 20.10.21. Latest validated version: 19.03

docker版本不兼容

查看docker 版本

docker version

看到版本是 Version: 20.10.21

kubectl version

kubectl version
Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.3",

降低版本

yum downgrade --setopt=obsoletes=0 -y docker-ce-19.03.4 docker-ce-cli-19.03.4 containerd.io
systemctl start docker
docker version

coredns 一直pending

kube-flannel.yml 这个文件不行,去github上找换文件
地址:https://github.com/flannel-io/flannel/blob/master/Documentation/kube-flannel.yml
执行:kubectl apply -f kube-flannel.yml
查看:kubectl get nodes 只要都是ready就是可以了

测试安装Tomcat

在主节点上部署一个Tomcat

kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8

获取K8s所有资源

kubectl get all

获取各节点部署信息

kubectl get pods -o wide

暴露nginx访问

kubectl expose deployment tomcat6 --port=80 --target-port=8080 --type=NodePort
pod的80映射容器的8080;server会带来pod的80

查看服务

kubectl get svc
kubectl get svc -o wide

访问接口

测试动态扩容

扩容:kubectl scale --replicas=3 deployment tomcat6
缩容:kubectl scale --replicas=1 deployment tomcat6

删除部署

kubectl delete service/tomcat6

安装Ingress

部署Ingress controller

kubectl apply -f ingress-controller.yaml

测试

touch ingress-tomcat6.yaml
kubectl apply -f ingress-tomcat6.yaml

kubesphere

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐