k8s 概念梳理 搭建集羣 基本操做

k8s 核心概念思惟導圖

圖片描述

集羣搭建

  • 單節點
https://my.oschina.net/u/731542/blog/2966427 (單機版)
補充:
1 init以前設置hosts 關閉swap
disable swap swapoff -a && sysctl -p
kubeadm init  --kubernetes-version=1.12.3 --pod-network-cidr=10.244.0.0/16

2 報錯: [ERROR KubeletVersion]: the kubelet version is higher than the control plane version.
yum -y remove kubelet
yum -y install kubelet-1.12.3 kubeadm-1.12.3
  • 多節點
https://www.kubernetes.org.cn/4387.html

init_mini_k8s.sh

#!/bin/bash

## 準備工做
# 修改主機名 請手動重啓一下
# hostnamectl set-hostname  k8s-master
# disable swap
# swapoff -a && sysctl -p
# 重啓系統
# reboot

## 安裝docker
yum -y install policycoreutils-python*
wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.68-1.el7.noarch.rpm
rpm -ivh container-selinux-2.68-1.el7.noarch.rpm
yum install -y libltdl.so*
yum install -y pigz*
wget https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm
rpm -ivh docker-ce-18.03.1.ce-1.el7.centos.x86_64.rpm

## 切換 k8s yum 源
touch /etc/yum.repos.d/kubernetes.repo
cat >> /etc/yum.repos.d/kubernetes.repo <<EOF
[kuberneten]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

yum makecache
sysctl net.bridge.bridge-nf-call-iptables=1

# 鏡像加速 添加私有倉庫
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://9cpn8tt6.mirror.aliyuncs.com"],
  "insecure-registries":["10.9.2.62:5000"]
}
EOF

# 這裏指定版本 否則會報錯
yum -y install kubelet-1.12.3 kubeadm-1.12.3 kubectl kubernetes-cni-0.6.0
kubectl version


systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet

kubeadm config images list

docker pull docker.io/mirrorgooglecontainers/kube-apiserver-amd64:v1.12.3
docker tag docker.io/mirrorgooglecontainers/kube-apiserver-amd64:v1.12.3 k8s.gcr.io/kube-apiserver:v1.12.3

docker pull docker.io/mirrorgooglecontainers/kube-controller-manager-amd64:v1.12.3
docker tag docker.io/mirrorgooglecontainers/kube-controller-manager-amd64:v1.12.3 k8s.gcr.io/kube-controller-manager:v1.12.3

docker pull docker.io/mirrorgooglecontainers/kube-scheduler-amd64:v1.12.3
docker tag docker.io/mirrorgooglecontainers/kube-scheduler-amd64:v1.12.3 k8s.gcr.io/kube-scheduler:v1.12.3

docker pull docker.io/mirrorgooglecontainers/kube-proxy-amd64:v1.12.3
docker tag docker.io/mirrorgooglecontainers/kube-proxy-amd64:v1.12.3 k8s.gcr.io/kube-proxy:v1.12.3

docker pull docker.io/mirrorgooglecontainers/pause-amd64:3.1
docker tag docker.io/mirrorgooglecontainers/pause-amd64:3.1 k8s.gcr.io/pause:3.1

docker pull docker.io/mirrorgooglecontainers/etcd-amd64:3.2.24
docker tag docker.io/mirrorgooglecontainers/etcd-amd64:3.2.24 k8s.gcr.io/etcd:3.2.24

docker pull docker.io/coredns/coredns:1.2.2
docker tag docker.io/coredns/coredns:1.2.2 k8s.gcr.io/coredns:1.2.2

docker images

kubeadm config images list

kubeadm init  --kubernetes-version=1.12.3 --pod-network-cidr=10.244.0.0/16

if [ ! -d "$HOME/.kube" ]; then
  mkdir -p $HOME/.kube
fi
if [ ! -f "$HOME/.kube/config" ]; then
  rm -f $HOME/.kube/config
fi
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# all-in-one
kubectl taint nodes --all node-role.kubernetes.io/master-

# 安裝 cni 網絡插件
docker pull quay.io/coreos/flannel:v0.10.0-amd64 
mkdir -p /etc/cni/net.d/

tee /etc/cni/net.d/10-flannel.conf <<-'EOF'
{"name":"cbr0","type":"flannel","delegate": {"isDefaultGateway": true}}
EOF

mkdir /usr/share/oci-umount/oci-umount.d -p
mkdir /run/flannel/
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml

kubectl get pods -n kube-system

kubectl get nodes

# 安裝 Weave scope
kubectl apply -f "https://cloud.weave.works/k8s/scope.yaml?k8s-version=$(kubectl version | base64 | tr -d '\n')&k8s-service-type=NodePort"
kubectl -n weave get service weave-scope-app

入門操做

  • 建立查看集羣html

    kubectl get nodes -o wide  # 查看集羣節點信息
    kubectl cluster-info  # Display cluster info 顯示集羣信息
  • 部署應用node

    kubectl run my-ngx --image=nginx:latest --port=80  # 部署應用
    
    old: kubectl run -i --tty load-generator --image=busybox /bin/sh
    new: kubectl run --generator=run-pod/v1 -i --tty load-generator --image=busybox /bin/sh
  • 發佈應用python

    kubectl expose deployment my-ngx --type='NodePort' --port=80  # 發佈應用
    kubectl get services/my-ngx    # 查看my-ngx服務
    kubectl describe services/my-ngx  # 查看詳細信息
    curl 10.9.2.42:19999    #  curl NodeIP:NodePort
  • 擴容縮容linux

    kubectl scale deployment/my-ngx --replicas=2  # 擴容
    kubectl get pods -o wide
    kubectl scale deployment/my-ngx --replicas=1  # 縮容
  • 更新回滾nginx

    kubectl set image deployment/my-ngx my-ngx=nginx:1.9  # 滾動更新
    kubectl rollout undo deployment/my-ngx   # 回滾
  • 刪除git

    kubectl get pods      # 查看pods
    kubectl get deployment  # 查看deployment服務
    kubectl delete pods my-ngx-59497d7745-qzwqz  # 刪除pods
    kubectl delete deployment my-ngx  # 刪除deployment
  • 查看錯誤信息github

    journalctl -f -u kubelet

參考

<<Kubenetes指南  倪鵬飛>>
https://www.kubernetes.org.cn/4387.html  # 安裝集羣
相關文章
相關標籤/搜索