Kubernetes positioned in Saas layer, focused on solving the problem of micro-service orchestration service large-scale deployment
1, turn off the firewall and set the boot disable
systemctl STOP firewalld
systemctl disable firewalld
2, the configuration repo
cd /etc/yum.repos.d/
download repo Docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/ docker-ce.repo
configure the repo Kubernetes
Vim kubernetes.repo
[Kubernetes]
name = Kubernetes Repo
BaseURL = HTTPS: //mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck = 0
gpgkey = HTTPS: //mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
Enabled = 1
to see whether the configuration repolist yum
3, configure gpg
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm key.gpg--package
wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
--import-Package-RPM RPM key.gpg
RPM --import yum-key.gpg
. 4, installation-CE Kubernetes docker
yum the install docker kubelet kubeadm kubectl -Y-CE
. 5, arranged docker initialization
vi / usr / lib / systemd / system / docker.service
add initialization environment variable
environment = "https_proxy = HTTP: //www.ik8s.io: 10080"
environment = "NO_PROXY = 127.0.0.1 / 8,172.20.0.0 / 16"
. 6, set the boot from the start start docker
systemctl Docker start
systemctl enable Docker
. 7, the alarm is ignored swap, start kubelet
VI / etc / sysconfig / kubelet
KUBELET_EXTRA_ARGS = "- Fail-swap to false-oN ="
systemctl enable kubelet.service
systemctl start kubelet
. 8, image downloading k8s
1), in create a repository on github
2), and then cloned to create local Dockerfile
Each follows
然后推送
3)、在docker hub上创建关联github
4)、下载镜像,执行下列脚本
5)、初始化,
kubeadm init --kubernetes-version=v1.12.1 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=Swap
6)、等初始化完成后,配置用户权限
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
然后添加node,在node机上执行
kubeadm join 192.168.137.200:6443 --token cl60h7.y4o6vpizk64j5cz6 --discovery-token-ca-cert-hash sha256:1fda5b34ecd3abb044ff137e5e74afbeea95cfdb881038ed78961b8d2ef00017
7)、查看状态
kubectl get cs
8)、查看nodes
kubectl get nodes
9)、安装flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待一段时间使用kubectl get nodes查看节点的状态为Ready,表示安装成功
启动一个服务
加入node时如果报错dial tcp 10.96.0.1:443: getsockopt: no route to host --- kubernetes(k8s)DNS 服务反复重启iptables规则乱了,通过下面命令纠正:
systemctl stop kubelet
systemctl stop docker
iptables --flush
iptables -tnat --flush
systemctl start kubelet
systemctl start docker
kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --replicas=1
将服务暴露在集群外
kubectl expose deployment nginx-deploy --name=nginx --port=80 --target-port=80 --protocol=TCP
10)、查看pod
kubectl get pods
查看pod起在哪个节点上
kubectl get pods -o wide
查看pod有哪些标签
kubectl get pods --show-labels
查看命名空间中的pod
kubectl get pods --all-namespaces
如果Error、Pending、ImagePullBackOff、CrashLoopBackOff都属于启动失败,排查:
a、查看 /var/log/messages系统日志
b、kubectl describe pod kube-flannel-ds-amd64-bq6fp --namespace=kube-system 看出node1上flannel镜像下载失败,去node1上手动下载镜像
c、kubectl logs -f kube-flannel-ds-amd64-bq6fp -n kube-system kubedns
11)、删除pod
kubectl delete pods <pod NAME>
(删除后会自动重新创建pod)
12)、查看services
kubectl get svc
查看services都有选择哪些pod,根据标签
kubectl get svc -o wide
13)、创建一个容器并运行,名字为nginx-deploy,镜像,端口,使用一个pod
kubectl run nginx-deploy --image=nginx:1.14-alpine --port=80 --replicas=1
14)、进入运行中的pod
kubectl exec nginx-deploy-86bf78c77-kxtch -it sh
15)、查看deployment
kubectl get deployment
16)、查看容器运行在那个node
kebuctl get node -o wide
17)、创建service,使用nginx-deploy容器,名称,端口,暴露端口
kubectl expose deployment nginx-deploy --name=nginx --port=80 --target-port=80
18)、修改运行实例的个数
kubectl scale --replicas=3 deployment myapp
19)、对实例进行升级
kubectl set image deployment nginx-deploy nginx-deploy=nginx:1.17
20)、回滚升级
kubectl rollout undo deployment nginx-deploy
21)、修改svc
kubectl edit svc nginx-deploy
spec:type: NodePort 将type改为 NodePort
可是在集群外访问node IP