K8S简介
K8S是负责自动化运维管理多个跨机器Docker程序的“集群”。
K8S集群安装(搭建K8S集群,必须先在集群机器上装好docker)
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
- 关闭selinux
sed -i 's/enforcing/disable/' /etc/selinux/config #永久关闭
setenforce 0 #临时关闭
- 关闭swap
swapoff -a #临时关闭
vim /etc/fstab #注释掉swap这行,永久关闭swap
# /dev/mapper/centos-swap swap swap defaults 0 0
systemctl reboot #重启生效
free -m #查看下swap交换区是否都为0,都为0表示swap关闭成功
- 给集群机器分别设置主机名
hostnamectl set-hostname <hostname>
比如:第一台k8s-master
第二台k8s-node1
第三台k8s-node2
- 在k8s-maste机器添加hosts,执行如下命令,ip需要修改成自己机器的ip
cat >> /etc/hosts << EOF
192.168.22.51 k8s-master
192.168.22.52 k8s-node1
192.168.22.53 k8s-node2
EOF
- 将桥接的IPv4流量传递到iptables
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
- 设置时间同步
yum install ntpdate -y
ntpdate time.windows.com
- 添加k8s yum源
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-e17-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
- 如果之前安装过k8s,先卸载旧版本
yum remove -y kubelet kubeadm kubectl
- 查看可以安装的版本
yum list kubelet --showduplicates | sort -r
- 安装kubelet、kubeadm、kubectl指定版本,我们使用kubeadm方式安装k8s集群
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
- 开机启动kubelet
systemctl enable kubelet
systemctl start kubelet
在k8s-master机器上执行初始化操作(里面的第一个IP地址就是k8s-master机器的ip,改成自己机器的,后面两个ip网段不用动)
kubeadm init --apiserver-advertise-address=192.168.22.51 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.18.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16
在k8s-master机器上执行如下命令:
#配置使用kubectl命令工具(类似docker这个命令)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
#查看kubectl是否能正常使用
kubectl getnodes
#安装Pod网络插件
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
#如果上面这个calico网络插件安装不成功可以试试下面这个
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kubeflannel.yml
在所有k8s node机器上执行上图第三个红框里的命令:
#将node节点加入进master节点的集群里
kubeadm join 192.168.22.51:6443 --token hbovty.字符串 \ --discovery-token-ca-cert-hash sha256:字符串
在k8s-mastet机器执行查看节点命令:
kubectl get nodes
补充:如果node节点添加进集群失败,可以删除节点重新添加
#要删除k8s-node1这个节点,首先在master节点上依次执行以下两个命令
kubectl drain k8s-node1 --delete-local-data --force --ignore-daemonsets
kubectl delete node k8s-node1
#在k8s-node1这个 节点上执行如下命令,这样该节点完全从k8s集群中脱离,之后可以重新添加到集群
kubeadm reset
K8S部署应用
#查看k8s部署的核心资源
kubectl get all
#创建部署一个nginx服务,使用镜像是nginx
kubectl create deployment nginx --image=nginx
#针对这次nginx部署,对它内部容器的80端口,在宿主机上面随机映射一个端口
kubectl expose deployment nginx --port=80 --type=NodePort
#展示更详细的核心信息
kubectl get all -owide
#查看日志
kubectl logs “podNAME”
#部署2次nginx服务,也可以部署多次
kubectl scale --replicas=2 deployment nginx
#k8s部署文件,yaml,k8s官方文档格式
kubectl apply -f 脚本路径/脚本文件.yaml
脚本如下:
metadate:
labels:
app: yichengwx-order
spec:
nodeSelector:
kubernetes.io/hostname: k8s-node1 #指定容器
containers:
- name: yichengwx-order #服务名称
image: lushao/yichengwx-order:1.0.0 #镜像仓库及镜像版本
imagePullPolicy: Always
ports:
- containerPort: 8848 #暴露端口
env:
- name: TZ
value: Asia/Shanghai #时区
- name: spring.cloud.nacos.config.server-addr
value: 192.168.22.52:8848
- name: JAVA_TOOL_OPTIONS
value: -javaagent:/agent/skywalking-agent.jar -DSW_AGENT_NAME=yichengwx-order -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.22.50:11800
- name: LOG_FILE
value: /var/logs
volumeMounts:
- mountPath: /var/logs
name: log-volume
volumes:
- name: log-volume
hostpath:
path: /mydata/k8s-app/yichengwx-order/logs
type: DirectoryOrCreate
dnsPolicy: Default #继承Pod所在宿主机的DNS设置
k8s-图形管理界面
通过点点点就实现应用部署
kubesphere
rancher